如何将24小时时间转换为12小时时间?

时间:2012-12-13 07:35:28

标签: python datetime python-3.x python-2.7 string-formatting

我有以下24小时的时间:

{'Wed': '10:30 - 21:00', 'Sun': '10:30 - 21:00', 'Thu': '10:30 - 21:00', 
 'Mon': '10:30 - 21:00', 'Fri': '10:30 - 22:00', 'Tue': '10:30 - 21:00', 
 'Sat': '10:30 - 22:00'}

如何将此转换为12小时?

{'Wed': '10:30 AM - 09:00 PM', 'Sun': '10:30 AM - 09:00 PM', 
 'Thu': '10:30 AM - 09:00 PM', 'Mon': '10:30 AM - 09:00 PM', 
 'Fri': '10:30 AM- 10:00 PM', 'Tue': '10:30 AM- 09:00 PM', 
 'Sat': '10:30 AM - 11:00 PM'}

我想智能地将"10.30"转换为"10.30 AM"& "22:30""10:30 PM"。我可以使用我自己的逻辑但是有没有办法在没有if ... elif的情况下智能地执行此操作?

6 个答案:

答案 0 :(得分:64)

>>> from datetime import datetime
>>> d = datetime.strptime("10:30", "%H:%M")
>>> d.strftime("%I:%M %p")
'10:30 AM'
>>> d = datetime.strptime("22:30", "%H:%M")
>>> d.strftime("%I:%M %p")
'10:30 PM'

答案 1 :(得分:9)

此代码的关键是使用library function time.strptime()将24小时字符串表示形式解析为time.struct_time对象,然后使用library function time.strftime()将此struct_time格式化为一个你想要的12小时格式的字符串。

我假设您编写循环没有问题,迭代dict中的值并将字符串分成两个子字符串,每个子字符串都有一个时间值。

对于每个子字符串,使用以下代码转换时间值:

import time
t = time.strptime(timevalue_24hour, "%H:%M")
timevalue_12hour = time.strftime( "%I:%M %p", t )

问题Converting string into datetime也提供了有用的答案。

答案 2 :(得分:1)

import time

# get current time
date_time = time.strftime("%b %d %Y %-I:%M %p")

上面的输出:2020年5月27日晚上7:26 ...至少对我而言;)

答案 3 :(得分:1)

>>> from datetime import datetime
>>> s = datetime.strptime("13:30", "%H:%M")
>>> print(s.strftime("%r"))
01:30:00 PM

答案 4 :(得分:0)

Python的strftime使用%I

参考http://strftime.org/

答案 5 :(得分:0)

我知道很多人都用类似的方式回答这个问题,但更简单的方法是

import time
t = time.strftime("%I:%M %p")
print(t)

%I 给出 12 小时制小时和 %M 分钟,%p 返回 PM 或 AM 值。就我而言,它返回了

05:27 PM