如何用python格式化字符串时间对象



我使用的是django-python。现在,我想将以下时间字符串转换为小时、分钟、am/pm格式。

string_time='2022-09-13 11:00:00.996795+00'

预期输出:

11:00 am

实际输出为:

ValueError: time data '2022-09-13 11:00:00.996795+00' does not match format '%m/%d/%y %H:%M:%S'

我的代码:

def time_slots(self,string_time='2022-09-13 11:00:00.996795+00'):
print(datetime.strptime(string_time, '%m/%d/%y %H:%M:%S'),type(start_time))
start_time = datetime.strptime(string_time, '%m/%d/%y %H:%M:%S')
return formated_start_time

当您删除最后三个字符('+00'(并将空格替换为T时,您可以使用datetime.datetime.fromisoformat(str(来获取datetime对象。

from datetime import datetime
timestr = '2022-09-13 11:00:00.996795+00'
timestr = timestr.rstrip(timestr[-3:]).replace(' ', 'T')
date = datetime.fromisoformat(timestr)

从那里你可以使用date.hourdate.minute来获得你想要的值。例如:

hour = date.hour%12
minute = date.minute
addition = ''
if date.hour > 12:
addition = 'pm'
else:
addition = 'am'
print(f'{hour}:{minute} {addition}')

我不确定最后一个字符串+00是否有用。如果没有,下面的实现可以帮助您。

from datetime import datetime
def time_slots(string_time='2022-09-13 11:00:00.996795+00'):
date = datetime.strptime(string_time[:-3], '%Y-%m-%d %H:%M:%S.%f')
return date.strftime("%H:%M %p")
output = time_slots()
print(output) # the output is: 11:00 AM

您可以使用dateutil提供的解析函数:

from dateutil import parse
string_time = '2022-09-13 11:00:00.996795+00'
dt = parse(string_time)
return dt.strftime("%H:%M %p")

结果:上午11:00

最新更新