You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中获取Zulu时间戳的标准方法是什么?

嘿,这个问题我之前做Python客户端对接的时候也踩过坑!其实Python标准库完全能搞定,不用手动拼接字符串那么麻烦,给你两种靠谱的方法:

方法一:Python 3.7+ 推荐方案

现在大部分项目都用3.7以上的Python版本了,直接用带时区的datetime对象配合isoformat就能轻松生成目标格式:

from datetime import datetime, timezone

# 获取带UTC时区的当前时间
utc_now = datetime.now(timezone.utc)
# 生成带毫秒的ISO格式,再把时区标识+00:00替换成Z(两者在ISO 8601里是等价的)
formatted_timestamp = utc_now.isoformat(timespec='milliseconds').replace('+00:00', 'Z')
print(formatted_timestamp)  # 输出类似:2024-05-20T14:22:35.456Z

这里的timespec='milliseconds'是用来指定保留三位毫秒数,刚好匹配你要的格式;替换+00:00为Z完全符合ISO 8601标准,不是野路子哦~

方法二:兼容Python 3.6及以下版本

如果你的项目还在使用较老的Python版本,timespec参数还没出现,可以用strftime来格式化:

from datetime import datetime, timezone

utc_now = datetime.now(timezone.utc)
# %f是微秒,取前三位就是毫秒,再拼接Z
formatted_timestamp = utc_now.strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z'
print(formatted_timestamp)  # 同样输出带Z的UTC时间戳

额外小技巧:序列化JSON时自动处理

如果是要把时间戳放到JSON里传给服务器,可以自定义一个JSON编码器,避免每次手动格式化:

from datetime import datetime, timezone
import json

class UTCDateEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, datetime):
            # 确保时间对象带UTC时区
            if obj.tzinfo is None:
                obj = obj.replace(tzinfo=timezone.utc)
            return obj.isoformat(timespec='milliseconds').replace('+00:00', 'Z')
        return super().default(obj)

# 使用示例
request_data = {"event_time": datetime.now(timezone.utc)}
print(json.dumps(request_data, cls=UTCDateEncoder))
# 输出:{"event_time": "2024-05-20T14:25:10.789Z"}

其实Python的datetime设计是偏向严谨的,用+00:00表示UTC是标准写法,而Z是它的别名,所以替换操作完全合理,不像网上那种手动插T和Z的野方案~

内容的提问来源于stack exchange,提问作者MatanRubin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:16:07