为何Pandas与Python标准库转换America/Boise时区结果不同?
Pandas与Python标准库转换America/Boise时区差异的原因
两者结果差异的核心原因是时区数据库版本不一致,具体体现在夏令时(DST)规则的解析差异:
Python标准库的
zoneinfo:依赖系统自带的IANA时区数据库(或安装的tzdata包),最新的IANA数据中,America/Boise在2038年的夏令时从3月13日(当年第二个周日)开始,时钟从2:00调至3:00,因此4月1日已处于夏令时(MDT,UTC-6偏移),转换后时间为2038-04-01 03:00:00-06:00。Pandas的时区处理:旧版本Pandas默认使用
pytz或dateutil作为时区后端,若这些库的时区数据未及时更新,可能未包含2038年America/Boise的最新夏令时规则,错误判定4月1日仍处于山区标准时间(MST,UTC-7偏移),因此输出2038-04-01 02:00:00-07:00。
解决办法
- 升级Pandas到2.0及以上版本,设置使用
zoneinfo作为时区后端,让Pandas与Python标准库共用同一时区数据源:
import pandas as pd pd.set_option('timezone_backend', 'zoneinfo') string = '2038-04-01 09:00:00.000000' print(pd.Timestamp(string).tz_localize('UTC').tz_convert('America/Boise'))
- 若无法升级Pandas,可手动更新
pytz或dateutil库到最新版本,确保时区数据同步。
内容的提问来源于stack exchange,提问作者ignoring_gravity
相关产品推荐
相关产品推荐

