首页 > 解决方案 > 将时间戳转换为日期时间错误的 AM/PM

问题描述

当我使用 am/pm 将 datetime 转换为时间戳并将时间戳再次返回到 datetime 时,它​​总是返回“am”,即使我输入的实际日期时间是“pm”

这是我的代码。

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

那么我该如何解决这个问题

标签: pythondatetimetimestamp

解决方案


您的问题出在格式字符串中,%p需要用于解析时间(请参阅文档%I中的第三条注释):

  1. 与 strptime() 方法一起使用时,如果 %I 指令用于解析小时,则 %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

推荐阅读