将时间戳转换为日期时间错误的AM / PM

时间:2020-06-09 08:40:31

标签: python datetime timestamp

当我将日期时间转换为带有am / pm的时间戳并再次将时间戳返回至datetime时,即使我输入的实际日期时间具有“ pm”,它也始终返回“ am”

这是我的代码。

from datetime import date, datetime

# convert datetime to timestamp
dt_tsp = datetime.timestamp(datetime.strptime('09 June 2020 02:47 PM', '%d %B %Y %H:%M %p'))

# convert timestramp to datetime
tsp_dt = datetime.fromtimestamp(dt_tsp).strftime('%d %B %Y %H:%M %p')

# result
print(tsp_dt)
# 09 June 2020 02:47 AM // alway am

那我该如何解决这个问题

2 个答案:

答案 0 :(得分:1)

您的问题出在您的格式字符串中,%p需要与%I一起使用来解析小时(请参阅documentation中的第三注):

  1. 与strptime()方法一起使用时,仅当%I指令用于解析%p指令时,%p指令才会影响输出小时字段。 小时。

因此,将您的代码更改为使用%I而不是%H

from datetime import date, datetime

dt_tsp = datetime.timestamp(datetime.strptime('09 June 2020 02:47 PM', '%d %B %Y %I:%M %p'))
tsp_dt = datetime.fromtimestamp(dt_tsp).strftime('%d %B %Y %I:%M %p')
print(tsp_dt)

输出:

09 June 2020 02:47 PM

答案 1 :(得分:0)

%H表示24小时制。要使用12小时制,请将%H替换为%I。将来请阅读文档

相关问题