皮茨:乌特科夫塞特对伊朗的值是错误的

2024-09-27 02:22:43 发布

您现在位置:Python中文网/ 问答频道 /正文

正确值:

>>> pytz.timezone('Asia/Tehran').utcoffset(datetime(2013, 1, 1)).total_seconds()/3600.0
3.5

>>> pytz.timezone('Asia/Tehran').utcoffset(datetime(2013, 1, 1)).total_seconds()
12600.0

错误值:

^{pr2}$

我想知道如果_utcoffset属性被用于utcoffset()方法中,为什么该方法在属性错误的情况下工作。
不管怎么说,看起来像个虫子。
如果将Asia/Tehran替换为Iran,则不会发生任何变化

>>> print pytz.VERSION
2012c

操作系统:Linux Mint 15(奥利维亚)
使用Python2.7


Tags: 方法datetime属性错误情况totaliranseconds
1条回答
网友
1楼 · 发布于 2024-09-27 02:22:43

让我们看看这是怎么回事:

>>> tz = pytz.timezone('Asia/Tehran')
>>> tz
<DstTzInfo 'Asia/Tehran' LMT+3:26:00 STD>

这意味着时区用LMT表示,也就是太阳时。这就是为什么您看到utcoffset为12360—这里没有错误,它只是使用不同的引用计算的。在

如果你这么做了:

^{pr2}$

localize方法使表示切换到该日期和地点使用的正确时区,即IRST,utcoffset为12600秒。在

这正是tzinfo对象的^{} method所做的-它本地化给定的datetime对象并返回它的utcoffset。在

同样,如果您现在这样做:

>>> d = datetime.now(tz)
>>> d
datetime.datetime(2013, 8, 15, 20, 46, 4, 705896, tzinfo=<DstTzInfo 'Asia/Tehran' IRDT+4:30:00 DST>)
>>> d.utcoffset()
datetime.timedelta(0, 16200)

您将得到以IRDT表示的日期时间,因为当前夏令时在该时区有效。在

相关问题 更多 >

    热门问题