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

如何在Python中将特定格式日期转为Unix时间戳并解决格式匹配错误

解决Python解析带PT时区的日期并转换为Unix时间戳的问题

你的问题出在Python标准库的datetime.strptime对时区缩写的支持上:%Z格式符只能识别系统本地时区或者少数标准时区缩写(比如UTC、GMT),像PT(太平洋时间)这种非标准缩写它是无法解析的,所以才会抛出ValueError。

下面给你几种可行的解决方案,按推荐程度排序:

方法1:使用python-dateutil自动解析(最省心)

python-dateutil的日期解析器能自动识别大部分时区缩写,包括PT,而且会自动处理夏令时/冬令时的偏移,不用手动判断。

步骤如下:

  1. 先安装库:
pip install python-dateutil
  1. 编写代码:
from dateutil import parser
import calendar

news_date_str = 'Mon, 15 Jun 2020 22:11:06 PT'
# 自动解析带时区的日期
parsed_date = parser.parse(news_date_str)
# 转换为UTC Unix时间戳
unix_timestamp = calendar.timegm(parsed_date.utctimetuple())
print(unix_timestamp)  # 输出:1592277066

方法2:使用Python 3.9+标准库zoneinfo(无需第三方库)

如果你用的是Python 3.9及以上版本,可以用标准库的zoneinfo来处理,它支持完整的时区数据库,能自动处理夏令时:

from datetime import datetime
from zoneinfo import ZoneInfo
import calendar

news_date_str = 'Mon, 15 Jun 2020 22:11:06 PT'
# 先去掉末尾的PT,解析为不带时区的datetime
naive_date = datetime.strptime(news_date_str[:-3], '%a, %d %b %Y %H:%M:%S')
# 为日期添加太平洋时区(自动识别夏令时)
pacific_tz = ZoneInfo('America/Los_Angeles')
tz_aware_date = naive_date.replace(tzinfo=pacific_tz)
# 转换为UTC Unix时间戳
unix_timestamp = calendar.timegm(tz_aware_date.utctimetuple())
print(unix_timestamp)  # 输出:1592277066

方法3:手动替换时区缩写为UTC偏移(适合简单场景)

如果你的日期范围固定(比如都是夏令时或者都是冬令时),可以手动把PT替换成对应的UTC偏移字符串,再用%z格式符解析:

比如2020年6月属于太平洋夏令时(PDT),对应的UTC偏移是-0700:

from datetime import datetime
import calendar

news_date_str = 'Mon, 15 Jun 2020 22:11:06 PT'
# 替换PT为夏令时偏移
formatted_date_str = news_date_str.replace(' PT', ' -0700')
# 解析带偏移的日期
parsed_date = datetime.strptime(formatted_date_str, '%a, %d %b %Y %H:%M:%S %z')
# 转换为UTC Unix时间戳
unix_timestamp = calendar.timegm(parsed_date.utctimetuple())
print(unix_timestamp)  # 输出:1592277066

⚠️ 注意:这种方法需要手动判断日期是否处于夏令时,如果你的数据跨冬夏令时,很容易出错,不推荐大范围使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 08:23:15