timezone - 为什么使用pytz时萨摩亚的偏移量不是+13或+14?
问题描述
我刚读过
BBC:萨摩亚和托克劳因更改日期而跳过一天,2011年 12月 30 日
我想用 来查看这个pytz
,但我尝试的所有内容都只显示了 -11 的偏移量,而不是+13 或 +14的偏移量:
>>> import pytz
>>> tz = pytz.timezone('Pacific/Samoa')
>>> tz_us = pytz.timezone('US/Samoa')
>>> import datetime
>>> datetime.datetime(2011, 12, 30, 9, 00, tzinfo=datetime.timezone.utc).astimezone(tz).isoformat()
'2011-12-29T22:00:00-11:00'
>>> datetime.datetime(2011, 12, 30, 10,00, tzinfo=datetime.timezone.utc).astimezone(tz).isoformat()
'2011-12-29T23:00:00-11:00'
>>> datetime.datetime(2011, 12, 30, 11, 00, tzinfo=datetime.timezone.utc).astimezone(tz).isoformat()
'2011-12-30T00:00:00-11:00'
>>> datetime.datetime(2011, 12, 31, 15, 00, tzinfo=datetime.timezone.utc).astimezone(tz).isoformat()
'2011-12-31T04:00:00-11:00'
>>> datetime.datetime(2015, 12, 31, 15, 00, tzinfo=datetime.timezone.utc).astimezone(tz).isoformat()
'2015-12-31T04:00:00-11:00'
>>> datetime.datetime(2011, 12, 31, 15, 00, tzinfo=datetime.timezone.utc).astimezone(tz_us).isoformat()
'2011-12-31T04:00:00-11:00'
>>> datetime.datetime(2015, 12, 31, 15, 00, tzinfo=datetime.timezone.utc).astimezone(tz_us).isoformat()
'2015-12-31T04:00:00-11:00'
为什么我看不到偏移量 +13 / +14?
解决方案
Pacific/Samoa
和都是US/Samoa
的别名Pacific/Pago_Pago
,代表美属萨摩亚,即 UTC-11 并没有跳过那一天。
对于美属萨摩亚,请使用
Pacific/Pago_Pago
对于萨摩亚独立国,使用
Pacific/Apia
对于托克劳,使用
Pacific/Fakaofo
就个人而言,我更喜欢只使用规范的区域名称。请参阅Wikipedia 上的列表以供参考。
使用 pytz 查看时区变化
带偏移量的 UTC 时间:
>>> import pytz
>>> tz = pytz.timezone('Pacific/Apia')
>>> import datetime
>>> datetime.datetime(2011, 12, 30, 9, 59, tzinfo=datetime.timezone.utc).astimezone(tz).isoformat()
'2011-12-29T23:59:00-10:00'
>>> datetime.datetime(2011, 12, 30, 10, 00, tzinfo=datetime.timezone.utc).astimezone(tz).isoformat()
'2011-12-31T00:00:00+14:00'
当地时间:
>>> '{:%Y-%m-%d %H:%M}'.format(datetime.datetime(2011, 12, 30, 9, 59, tzinfo=datetime.timezone.utc).astimezone(tz))
'2011-12-29 23:59'
>>> '{:%Y-%m-%d %H:%M}'.format(datetime.datetime(2011, 12, 30, 10, 00, tzinfo=datetime.timezone.utc).astimezone(tz))
'2011-12-31 00:00'
推荐阅读
- python - Python理解散点图
- python - 使用 google SMTP 从同一域发送电子邮件,但用户名不存在
- python - 无法识别以下错误:TypeError: object.__init__() 仅采用一个参数(要初始化的实例)
- javascript - 加载页面而不是单击时功能按钮始终处于活动状态 - React,Node
- python - 如何仅使用 python 中的日期过滤数据框的 datetime 列?
- c++ - 错误:将“const SunscreenSPF”作为“this”参数传递会丢弃限定符问题
- html - 将 html 日期传递到 django 模型时,来自 jQuery AJAX 调用的 HTTP 500 错误
- json - 如何将动态日期戳添加到由 Bash cron 发送的 JSON 有效负载?
- python - 在应用程序而不是 KIVY 中的终端窗口上显示输出
- amazon-web-services - GetSecretValue 操作未授权 AWS Secrets Manager 错误