提问人:andrew 提问时间:11/14/2023 最后编辑:FObersteinerandrew 更新时间:11/15/2023 访问量:65
如何将日期时间格式化为字符串为“yyyy-MM-dd'T'HH:mm:ss。python 中的 SSSZ'“ 格式
How to Format a datetime to String as "yyyy-MM-dd'T'HH:mm:ss.SSSZ'" format in python
问:
我想获取 datetime.now,但格式为“2023-11-13T02:12:01.480Z” 我尝试使用
now = now.strftime("%Y-%m-%dT%H:%M:%S.%Z")
但是得到:
2023-11-15T08:27:34.
如何将日期时间格式化为字符串为“yyyy-MM-dd'T'HH:mm:ss。python 中的 SSSZ'“ 格式 有什么想法吗?
答:
1赞
FObersteiner
11/15/2023
#1
TL;DR 使用
from datetime import datetime, timezone
datetime.now(timezone.utc).isoformat(timespec="milliseconds").replace("+00:00", "Z")
# '2023-11-15T07:18:11.226Z'
注意:您需要将 UTC 指定为 tz 参数,才能实际获取 UTC 日期时间,而不是本地时间。datetime.now
将 DateTime 对象识别为输入
from zoneinfo import ZoneInfo
now = datetime.now(ZoneInfo("Europe/Berlin")) # UTC+1 in Nov 2023
now
# datetime.datetime(2023, 11, 15, 11, 57, 27, 899158, tzinfo=zoneinfo.ZoneInfo(key='Europe/Berlin'))
now.astimezone(timezone.utc).isoformat(timespec="milliseconds").replace("+00:00", "Z")
# '2023-11-15T10:57:27.899Z'
朴素的日期时间作为输入
now = datetime.now() # local time !
now
# datetime.datetime(2023, 11, 15, 11, 59, 52, 263956)
# NOTE input stays local time, no Z added:
now.isoformat(timespec="milliseconds").replace("+00:00", "Z")
# '2023-11-15T11:59:52.263'
# NOTE input *assumed* to be local time, then converted to UTC,
# therefore the Z is added:
now.astimezone(timezone.utc).isoformat(timespec="milliseconds").replace("+00:00", "Z")
# '2023-11-15T10:59:52.263Z'
评论
Z
.%Z
now