为什么使用pytz时萨摩亚的偏移量不是+13或+14? [英] Why isn't the offset of Samoa +13 or +14 when using pytz?

查看:28
本文介绍了为什么使用pytz时萨摩亚的偏移量不是+13或+14?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

刚看完

<块引用>

BBC:萨摩亚和托克劳跳过一天更改日期变更, 30.12.2011

我想用 pytz 看到这个,但是我尝试的所有内容都只显示了 -11 的偏移量,而不是 +13 或 +14:

<预><代码>>>>进口pytz>>>tz = pytz.timezone('太平洋/萨摩亚')>>>tz_us = pytz.timezone('美国/萨摩亚')>>>导入日期时间>>>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/SamoaUS/Samoa 都是 Pacific/Pago_Pago 的别名代码>,代表美属萨摩亚,即UTC-11,那天没有跳过.

  • 对于美属萨摩亚,使用 Pacific/Pago_Pago

  • 对于萨摩亚独立国,使用Pacific/Apia

  • 对于托克劳,使用Pacific/Fakaofo

就我个人而言,我更喜欢只使用规范的区域名称.请参阅维基百科上的列表以供参考.

使用pytz查看时区变化

UTC 时间偏移:

<预><代码>>>>进口pytz>>>tz = pytz.timezone('太平洋/阿皮亚')>>>导入日期时间>>>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'

I've just read

BBC: Samoa and Tokelau skip a day for dateline change, 30.12.2011

I wanted to see this with pytz, but everything I tried only showed an offset of -11, but not of +13 or +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'

Why can't I see the offset +13 / +14?

解决方案

Both Pacific/Samoa and US/Samoa are aliases of Pacific/Pago_Pago, representing American Samoa, which is UTC-11 and did not skip that day.

  • For American Samoa, use Pacific/Pago_Pago

  • For the Independent State of Samoa, use Pacific/Apia

  • For Tokelau, use Pacific/Fakaofo

Personally, I prefer to only use canonical zone names. See the list on Wikipedia for reference.

See the timezone change with pytz

UTC time with offset:

>>> 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'

Local time:

>>> '{:%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'

这篇关于为什么使用pytz时萨摩亚的偏移量不是+13或+14?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆