Python日期时间解析

问题描述

这为什么失败:

datetime.datetime.strptime(
        date_string,' %A %d %B %Y : %I:%M %p')
ValueError("time data ' Tuesday 08 September 2020 :  00:07 AM' does not match format ' %A %d %B %Y : %I:%M %p'")

这可行时:

datetime.datetime.strptime(' Wednesday 02 September 2020 :   2:54 AM',' %A %d %B %Y : %I:%M %p')

我认为这必须与00小时有关,但我确切不知道这是什么。

解决方法

来自datetime文档:

  • %H小时(24小时制),为零填充的十进制数字。 00,01,…,23
  • %I小时(12小时制),为零填充的十进制数字。 01,02,…,12

因此,您需要输入12:07 am这样的时间才能有效(12小时制中没有0点钟)

>> datetime.datetime.strptime(' Tuesday 01 September 2020 : 12:07 AM',' %A %d %B %Y : %I:%M %p')
datetime.datetime(2020,9,1,7)

或者使用%H来保持24小时制,在这种情况下,您可能希望放弃%p,因为在这种情况下它毫无意义

>> datetime.datetime.strptime(' Tuesday 01 September 2020 : 00:07',' %A %d %B %Y : %H:%M')  
datetime.datetime(2020,7)