我需要知道运行Python脚本时CDT的当前时间。但是,此脚本将在多个不同的时区中运行,因此简单的偏移将不起作用。 我只需要Linux的解决方案,但跨平台解决方案将是理想的。
答案 0 :(得分:9)
pytz或dateutil.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名称处理,那就非常直接了。