48

我有以下 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

4

6 回答 6

101
>>> 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'
于 2012-12-13T07:46:02.530 回答
15

此代码的关键是使用库函数time.strptime()将 24 小时字符串表示解析为time.struct_time对象,然后使用库函数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也有有用的答案。

于 2012-12-13T07:56:31.810 回答
4
>>> from datetime import datetime
>>> s = datetime.strptime("13:30", "%H:%M")
>>> print(s.strftime("%r"))
01:30:00 PM
于 2020-11-04T14:00:35.067 回答
4

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

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

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

05:27 PM
于 2021-04-10T11:58:02.237 回答
3
import time

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

以上输出:2020 年 5 月 27 日晚上 7:26 ......至少现在对我来说 ;)

于 2020-05-28T01:29:37.017 回答
2

Python 的 strftime 使用 %I

参考http://strftime.org/

于 2015-12-02T13:35:58.690 回答