如何自动获取本地时区的时区偏移量?

2024-05-01 17:56:12 发布

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

我正在尝试自动获取本地时区偏移,但遇到了问题。我试过:

print time.timezone/3600

这将获得(当前错误的)偏移量,因为它不会自动调整夏令时和非夏令时。

我也试过:

now_utc = pytz.utc.localize(datetime.datetime.now())
now_mst = now_utc.astimezone(pytz.timezone('US/Mountain'))

这将获得正确的偏移值,但我想自动设置“US/Mountain”部分,这样就不必手动输入任何内容来获取偏移。

是否有方法获得使用DST和非DST自动调整的正确偏移?

我将在不同地理位置的多个服务器上运行这个脚本,如果可以的话,我想自动获取tz偏移量。


Tags: datetimetime错误now偏移量dstusutc
1条回答
网友
1楼 · 发布于 2024-05-01 17:56:12

您可以为此使用dateutil模块。要立即获取本地时区:

>>> import dateutil.tz
>>> import datetime
>>> localtz = dateutil.tz.tzlocal()
>>> localtz.tzname(datetime.datetime.now(localtz))
'EDT'

我现在是东部夏令时间。在夏令时切换回EST后,您可以看到它在未来会变回EST:

>>> localtz.tzname(datetime.datetime.now(localtz) +
                   datetime.timedelta(weeks=20))
'EST'

如果需要从UTC的偏移量,可以使用UTC offset函数。它返回时间增量:

>>> localtz.utcoffset(datetime.datetime.now(localtz))
datetime.timedelta(-1, 72000)

在这种情况下,由于我是UTC-4,它返回-1天+20小时。如果您需要,您可以将其转换为小时:

>>> localoffset = localtz.utcoffset(datetime.datetime.now(localtz))
>>> localoffset.total_seconds() / 3600
-4.0

相关问题 更多 >