Python `strptime` 在打印时缺少 "T" 和 "Z"?
Python `strptime` missing "T" and "Z" when printing?
我在这里错过了什么?
这是为什么...
import datetime
start_date = '2020-10-01T00:00:00Z'
start_date_obj = datetime.datetime.strptime(start_date, '%Y-%m-%dT%H:%M:%SZ')
print(start_date_obj)
...结果: 2020-10-01 00:00:00
...而不是: 2020-10-01T00:00:00Z
?
输出中的“T”和“Z”在哪里?
无视。显然我需要将 datetime
对象转换回字符串 (?) 才能很好地打印出来?
import datetime
start_date = '2020-10-01T00:00:00Z'
start_date_obj = datetime.datetime.strptime(start_date, '%Y-%m-%dT%H:%M:%SZ')
start_date_printable = datetime.datetime.strftime(start_date_obj, '%Y-%m-%dT%H:%M:%SZ')
print(start_date_printable)
结果: 2020-10-01T00:00:00Z
Z 表示 UTC,因此您应该使用带有 %z
指令的 strptime
来解析一个已知的日期时间对象:
from datetime import datetime
s = '2020-10-01T00:00:00Z'
dt = datetime.strptime(s, '%Y-%m-%dT%H:%M:%S%z')
print(dt)
# 2020-10-01 00:00:00+00:00
或fromisoformat
加一点hack:
dt = datetime.fromisoformat(s.replace('Z', '+00:00'))
print(dt)
# 2020-10-01 00:00:00+00:00
你可以在转换回字符串时做同样的事情:
out = dt.isoformat().replace('+00:00', 'Z')
print(out)
# 2020-10-01T00:00:00Z
strftime
不会给你 Z
但例如 UTC
:
out = dt.strftime('%Y-%m-%dT%H:%M:%S %Z')
print(out)
# 2020-10-01T00:00:00 UTC
我在这里错过了什么?
这是为什么...
import datetime
start_date = '2020-10-01T00:00:00Z'
start_date_obj = datetime.datetime.strptime(start_date, '%Y-%m-%dT%H:%M:%SZ')
print(start_date_obj)
...结果: 2020-10-01 00:00:00
...而不是: 2020-10-01T00:00:00Z
?
输出中的“T”和“Z”在哪里?
无视。显然我需要将 datetime
对象转换回字符串 (?) 才能很好地打印出来?
import datetime
start_date = '2020-10-01T00:00:00Z'
start_date_obj = datetime.datetime.strptime(start_date, '%Y-%m-%dT%H:%M:%SZ')
start_date_printable = datetime.datetime.strftime(start_date_obj, '%Y-%m-%dT%H:%M:%SZ')
print(start_date_printable)
结果: 2020-10-01T00:00:00Z
Z 表示 UTC,因此您应该使用带有 %z
指令的 strptime
来解析一个已知的日期时间对象:
from datetime import datetime
s = '2020-10-01T00:00:00Z'
dt = datetime.strptime(s, '%Y-%m-%dT%H:%M:%S%z')
print(dt)
# 2020-10-01 00:00:00+00:00
或fromisoformat
加一点hack:
dt = datetime.fromisoformat(s.replace('Z', '+00:00'))
print(dt)
# 2020-10-01 00:00:00+00:00
你可以在转换回字符串时做同样的事情:
out = dt.isoformat().replace('+00:00', 'Z')
print(out)
# 2020-10-01T00:00:00Z
strftime
不会给你 Z
但例如 UTC
:
out = dt.strftime('%Y-%m-%dT%H:%M:%S %Z')
print(out)
# 2020-10-01T00:00:00 UTC