【问题标题】:Convert timestramp to datetime wrong AM/PM [duplicate]将时间戳转换为日期时间错误的 AM/PM [重复]
【发布时间】:2020-06-09 08:40:31
【问题描述】:

当我使用 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

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

【问题讨论】:

    标签: python datetime timestamp


    【解决方案1】:

    您的问题在于您的格式字符串,%p 需要与%I 一起使用以进行解析时间(请参阅documentation 中的第三个注释):

    1. 与 strptime() 方法一起使用时,如果使用 %I 指令解析 小时。

    所以更改您的代码以使用%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
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 非常感谢,这是我的错。
      猜你喜欢
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 2021-03-19
      • 2015-07-07
      • 1970-01-01
      • 2011-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多