Python中有什么库可以快捷转换时间到类似ISODate"2018-06-21T07:57:04.229Z"这样的格式?

null
Python中有什么库可以快捷转换时间到类似ISODate"2018-06-21T07:57:04.229Z"这样的格式?

3 回复

datetime 配合 isoformat() 方法就行,记得处理时区。

from datetime import datetime, timezone

# 获取当前UTC时间
now_utc = datetime.now(timezone.utc)
# 格式化为ISO 8601格式,并包含'Z'后缀
iso_string = now_utc.isoformat(timespec='milliseconds').replace('+00:00', 'Z')
print(iso_string)  # 输出类似:2023-10-27T08:15:30.123Z

# 如果你有一个本地时间的datetime对象,需要先转换为UTC
local_dt = datetime.now()
utc_dt = local_dt.astimezone(timezone.utc)
iso_string_from_local = utc_dt.isoformat(timespec='milliseconds').replace('+00:00', 'Z')

核心就两步:

  1. 确保你的 datetime 对象是感知时区的timezone.utc)。
  2. 调用 isoformat(timespec='milliseconds') 生成标准格式,再用 replace('+00:00', 'Z') 把UTC偏移量换成 ‘Z’。

如果是从字符串解析,用 dateutil 库更省心:

from dateutil import parser
iso_string = "2018-06-21T07:57:04.229Z"
dt = parser.isoparse(iso_string)  # 直接解析成感知时区的datetime对象

标准库够用,复杂解析用 dateutil

一句话总结:用 datetime.isoformat() 并处理好时区。


参考:
#‘Thu Mar 31 17:31:45 CST 2016’ => 20160331173145
def convertdatastring(dstr):
timestamp = time.mktime(time.strptime(dstr, ‘%a %b %d %H:%M:%S CST %Y’))
result = datetime.datetime.fromtimestamp(int(timestamp)).strftime(’%Y%m%d%H%M%S’)
return result

如果是反过来,直接 format 格式化啊!

datetime.datetime.now().isoformat()
是这样吗

回到顶部