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

Python datetime转换指定日期为Unix时间戳的代码问题求助

问题定位

你这段代码有2个直接导致运行报错的错误,1个会导致结果不准的遗漏:

  • 格式串分隔符不匹配:传入的日期字符串Jul 07 2022 02:00:00各日期段用空格分隔,你写的解析格式'%b-%d-%Y-%H:%M:%S'用的是-做分隔,strptime解析时会直接抛出格式不匹配错误。
  • 缺失模块导入:代码中直接调用datetime.strptime和构造datetime对象,没有提前从datetime模块导入对应类,运行会报名称错误。
  • 时区处理缺失:用无时区信息的原生时间对象直接和1970年1月1日做差计算Unix时间戳,会默认取运行环境的本地时区偏移,不同环境跑出来的结果不一致,和UTC标准Unix时间戳存在偏差。
修正代码

如果要计算UTC标准的Unix时间戳,代码如下:

from datetime import datetime, timezone

releasedate = 'Jul 07 2022 02:00:00'
# 修正格式串分隔符为空格,匹配输入字符串格式
releasedate2 = datetime.strptime(releasedate, '%b %d %Y %H:%M:%S')
# 统一给计算的两个时间对象指定UTC时区,得到标准Unix时间戳
unixdate = (releasedate2.replace(tzinfo=timezone.utc) - datetime(1970, 1, 1, tzinfo=timezone.utc)).total_seconds()

运行后得到的unixdate值为1657159200.0,和该UTC时间对应的标准Unix时间戳完全一致。

如果你要解析的日期本身是本地时区的时间,只需要把replace(tzinfo=timezone.utc)替换为对应本地时区的tzinfo对象即可,不要混用无时区的时间对象直接做差,避免结果偏差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:51:20