如何将这种格式 '2017-12-02 23:55:66.333+01:00' 的 str 转换为 python 中的日期时间?
How to convert a str like this format '2017-12-02 23:55:66.333+01:00' to datetime in python?
我需要将格式为“2017-12-02 23:55:66.333+01:00”的一组字符串转换为日期时间。
我试过用这个:
from datetime import datetime
date_time_str = '2017-12-02 23:55:66.333+01:00'
date_time_obj = datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S%z')
print ("The date is", date_time_obj)
但我有这个输出:
>> ValueError: raise ValueError("time data %r does not match format %r" %
ValueError: time data '2017-12-02 23:55:66.333+01:00' does not match format '%Y-%m-%d %H:%M:%S%z'
如何转换此日期或此 date_time_str 无效?
这是您想要做的,缺少剥离微秒和时区部分:
date_time_str = '2017-12-02 23:55:59.333+01:00'
date_time_obj = datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S.%f%z')
print ("The date is", date_time_obj)
输出:
The date is 2017-12-02 23:55:59.333000+01:00
或者在 python 3.7+ 中简单地使用它:
datetime.fromisoformat(date_time_str)
有两个问题:
- 你的秒数大于 60
- 您需要包含微秒格式化程序
因此要修复它,
from datetime import datetime
date_time_str = '2017-12-02 23:55:06.333+01:00'
date_time_obj = datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S.%f%z')
print("The date is", date_time_obj)
产量
The date is 2017-12-02 23:55:06.333000+01:00
您可以捕获由秒数过大引起的错误,并通过
提出有用的错误消息
from datetime import datetime
date_time_str = '2017-12-02 23:55:06.333+01:00'
try:
date_time_obj = datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S.%f%z')
except ValueError as ve:
if "unconverted data remains" in ve.args[0]:
raise ValueError("One of the values in the time string isn't meaninful")
else:
raise ve
print("The date is", date_time_obj)
我需要将格式为“2017-12-02 23:55:66.333+01:00”的一组字符串转换为日期时间。
我试过用这个:
from datetime import datetime
date_time_str = '2017-12-02 23:55:66.333+01:00'
date_time_obj = datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S%z')
print ("The date is", date_time_obj)
但我有这个输出:
>> ValueError: raise ValueError("time data %r does not match format %r" %
ValueError: time data '2017-12-02 23:55:66.333+01:00' does not match format '%Y-%m-%d %H:%M:%S%z'
如何转换此日期或此 date_time_str 无效?
这是您想要做的,缺少剥离微秒和时区部分:
date_time_str = '2017-12-02 23:55:59.333+01:00'
date_time_obj = datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S.%f%z')
print ("The date is", date_time_obj)
输出:
The date is 2017-12-02 23:55:59.333000+01:00
或者在 python 3.7+ 中简单地使用它:
datetime.fromisoformat(date_time_str)
有两个问题:
- 你的秒数大于 60
- 您需要包含微秒格式化程序
因此要修复它,
from datetime import datetime
date_time_str = '2017-12-02 23:55:06.333+01:00'
date_time_obj = datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S.%f%z')
print("The date is", date_time_obj)
产量
The date is 2017-12-02 23:55:06.333000+01:00
您可以捕获由秒数过大引起的错误,并通过
提出有用的错误消息from datetime import datetime
date_time_str = '2017-12-02 23:55:06.333+01:00'
try:
date_time_obj = datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S.%f%z')
except ValueError as ve:
if "unconverted data remains" in ve.args[0]:
raise ValueError("One of the values in the time string isn't meaninful")
else:
raise ve
print("The date is", date_time_obj)