无法在Python中将字符串转换为日期时间

时间:2019-07-24 06:17:30

标签: python python-3.x datetime

我正在尝试下面的代码,尽管格式似乎正确,但似乎抛出了错误:

from datetime import datetime

utc_time1 = datetime.strptime("2019-07-12T05:49:55:2771249Z", "%Y-%m-%dT%H:%M:%S:%fZ")
print(utc_time1)

utc_time2 = datetime.strptime("2019-07-12T05:49:55.2771249Z", "%Y-%m-%dT%H:%M:%S.%fZ")
print(utc_time2)

我收到以下错误:

Traceback (most recent call last):
  File "C:/Users/bhatak/PycharmProjects/untitled/test.py", line 3, in <module>
    utc_time1 = datetime.strptime("2019-07-12T05:49:55:2771249Z", "%Y-%m-%dT%H:%M:%S:%fZ")
  File "C:\Users\bhatak\AppData\Local\Programs\Python\Python37-32\lib\_strptime.py", line 577, in _strptime_datetime
    tt, fraction, gmtoff_fraction = _strptime(data_string, format)
  File "C:\Users\bhatak\AppData\Local\Programs\Python\Python37-32\lib\_strptime.py", line 359, in _strptime
    (data_string, format))
ValueError: time data '2019-07-12T05:49:55:2771249Z' does not match format '%Y-%m-%dT%H:%M:%S:%fZ'

1 个答案:

答案 0 :(得分:1)

根据文档,https://docs.python.org/3/library/datetime.html#strftime-strptime-behavior

  

与strptime()方法一起使用时,%f指令接受来自   右边是一到六位数和零填充。 %f是对   C标准中的格式字符集(但已实现   分别放在日期时间对象中,因此始终可用)。

您的毫秒数有7位数字,%f表达式最多可以有6位数字。如果删除最后一个,则不会有任何问题。

277124而不是2771249。