如何在任何地方找到特定时区的时间

时间:2010-01-28 05:19:14

标签: python linux datetime timezone

我需要知道运行Python脚本时CDT的当前时间。但是,此脚本将在多个不同的时区中运行,因此简单的偏移将不起作用。 我只需要Linux的解决方案,但跨平台解决方案将是理想的。

3 个答案:

答案 0 :(得分:9)

pytzdateutil.tz就是诀窍。基本上它是这样的:

>>> from pytz import timezone
>>> mytz = timezone('Europe/Paris')
>>> yourtz = timezone('US/Eastern')

>>> from datetime import datetime
>>> now = datetime.now(mytz)
>>> alsonow = now.astimezone(yourtz)

困难实际上在于弄清楚你所在的时区.dateutil.tz更好。

>>> from dateutil.tz import tzlocal, gettz
>>> mytz = tzlocal()
>>> yourtz = gettz('US/Eastern')

如果你想了解为什么时区是邪恶的所有细节,他们就在这里:

http://regebro.wordpress.com/2007/12/18/python-and-time-zones-fighting-the-beast/

http://regebro.wordpress.com/2008/05/10/python-and-time-zones-part-2-the-beast-returns/

http://regebro.wordpress.com/2008/05/13/thanks-for-the-testing-help-conclusions/

答案 1 :(得分:4)

您可以使用time.gmtime()从任何机器获取GMT(UTC)时间,无论时区如何,您都可以应用偏移量。

答案 2 :(得分:1)

简单的偏移将起作用,您只需要从UTC偏移。

使用datetime,您可以获得当前的utc(gmt)时间并使用datetime对象:

datetime.datetime.utcnow() - 提供UTC时间

datetime.datetime.now() - 在本地计算机上提供时间

要从任何系统获取CT时间,您需要知道与UTC的CT时间偏移。 然后考虑夏令时代码一个函数来获取当前偏移量。

>>> import datetime
>>> utc = datetime.datetime.utcnow()
>>> current_ct_offset = get_current_ct_offset()
>>> ct_datetime = utc + datetime.timedelta(hours=current_ct_offset)

我可能会在这里忽略一些东西,但如果你只关心一个时区并且你没有做tz名称处理,那就非常直接了。