如何生成'2022-12-01T09:13:45Z'格式的ISO时间字符串?
解决本地时间转带Z标识的ISO UTC时间问题
你的代码输出不带Z是因为datetime.now()获取的是无时区信息的本地时间,isoformat()对这种"朴素(naive)" datetime只会输出日期时间部分,不会添加时区标识。而Z代表UTC时区,所以需要生成UTC时间并格式化为目标格式。
方法1:直接生成UTC时间并添加Z
这种方法最简单,直接获取当前UTC时间,手动拼接Z:
from datetime import datetime # 获取UTC时间并格式化为目标格式 iso_date = datetime.utcnow().replace(microsecond=0).isoformat() + 'Z' print('ISO Datetime:', iso_date)
输出示例:2022-12-01T09:13:45Z
方法2:将本地时间转换为UTC后格式化
如果需要先基于本地时间转换,可指定本地时区,转换为UTC后再格式化:
from datetime import datetime import pytz # 替换为你的本地时区(比如Asia/Shanghai、Europe/London等) local_tz = pytz.timezone('Asia/Shanghai') # 获取带时区的本地时间 local_dt = datetime.now(local_tz) # 转换为UTC时间并去除微秒 utc_dt = local_dt.astimezone(pytz.utc).replace(microsecond=0) # 格式化为带Z的ISO格式 iso_date = utc_dt.strftime('%Y-%m-%dT%H:%M:%SZ') print('ISO Datetime:', iso_date)
或者也可以用isoformat()后替换时区后缀:
iso_date = utc_dt.isoformat().replace('+00:00', 'Z')
关键说明
Z是UTC时区的标准标识,对应偏移量+00:00- 带时区信息的datetime(aware datetime)才能正确处理时区转换,避免时间计算错误
内容的提问来源于stack exchange,提问作者Praveen Kumar
相关产品推荐
相关产品推荐

