用毫秒和时区保存日期时间 - python
saving datetime with milliseconds and time zone - python
对于以下日期格式
,我无法找出 strptime
的正确第二个参数
a = datetime.strptime('2017-03-09 14:00:00.000000+0000', '%y-%m-%d %H:%M:%S.%f+%z')
我得到的错误是:
ValueError: time data '2017-03-09 14:00:00.000000+0000' does not match format '%y-%m-%d %H:%M:%S.%f+%z'
谁能帮帮我?
正确的格式字符串是:
%Y-%m-%d %H:%M:%S.%f%z
下次您可以更轻松地解决这个问题,方法是使用 strftime()
使用给定格式编写日期时间。比如你原来的:
datetime.datetime.now().astimezone(tz=None).strftime('%y-%m-%d %H:%M:%S.%f+%z')
给出:
17-03-13 22:53:50.010314++0800
从那里很容易看出问题所在。
事情是这样的:
import datetime
output_date = datetime.datetime.now(tz = datetime.datetime.now().astimezone().tzinfo).isoformat(timespec='milliseconds')
print(output_date)
给出:
"2021-04-20T16:56:29.800+02:00"
采用 ISO 8601 yyyy-MM-dd'T'HH:mm:ss.SSSXXX 格式。
其他答案都很好,只是我猜想关于一个示例案例的问题是由需要转换为日期时间的数据框的一整列引起的。
仅适用于像我这样拥有数据框并且需要重新格式化整个列的人:
pd.to_datetime(df['MY_STR_TIMESTAMP_COLUMN_NAME'])
摘自 Convert DataFrame column type from string to datetime.
如果你很懒惰并且不介意 pandas 的开销,那么你甚至可以只输入一个。
对于以下日期格式
,我无法找出strptime
的正确第二个参数
a = datetime.strptime('2017-03-09 14:00:00.000000+0000', '%y-%m-%d %H:%M:%S.%f+%z')
我得到的错误是:
ValueError: time data '2017-03-09 14:00:00.000000+0000' does not match format '%y-%m-%d %H:%M:%S.%f+%z'
谁能帮帮我?
正确的格式字符串是:
%Y-%m-%d %H:%M:%S.%f%z
下次您可以更轻松地解决这个问题,方法是使用 strftime()
使用给定格式编写日期时间。比如你原来的:
datetime.datetime.now().astimezone(tz=None).strftime('%y-%m-%d %H:%M:%S.%f+%z')
给出:
17-03-13 22:53:50.010314++0800
从那里很容易看出问题所在。
事情是这样的:
import datetime
output_date = datetime.datetime.now(tz = datetime.datetime.now().astimezone().tzinfo).isoformat(timespec='milliseconds')
print(output_date)
给出:
"2021-04-20T16:56:29.800+02:00"
采用 ISO 8601 yyyy-MM-dd'T'HH:mm:ss.SSSXXX 格式。
其他答案都很好,只是我猜想关于一个示例案例的问题是由需要转换为日期时间的数据框的一整列引起的。
仅适用于像我这样拥有数据框并且需要重新格式化整个列的人:
pd.to_datetime(df['MY_STR_TIMESTAMP_COLUMN_NAME'])
摘自 Convert DataFrame column type from string to datetime.
如果你很懒惰并且不介意 pandas 的开销,那么你甚至可以只输入一个。