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

Python 如何从任何地方找到特定时区的时间,python,linux,datetime,timezone,Python,Linux,Datetime,Timezone,我需要知道运行Python脚本时CDT的当前时间。但是,此脚本将在多个不同的时区中运行,因此简单的偏移量不起作用。 我只需要一个针对Linux的解决方案,但跨平台的解决方案将是理想的。您可以使用time.gmtime()从任何机器获取时间GMT(UTC),无论时区如何,然后您可以应用偏移量。或者是这里的诀窍。基本上是这样的: >>> from pytz import timezone >>> mytz = timezone('Europe/Paris') &g

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

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

或者是这里的诀窍。基本上是这样的:

>>> 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')
如果您想了解时区为何邪恶的所有细节,请访问:


一个简单的偏移将起作用,您只需从UTC偏移即可

使用可以获取当前utc(gmt)时间并使用datetime对象:

-提供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名称处理,那就相当直截了当了。

问题是知道偏移量是多少,所以这没有帮助。Lennart,不,他问的是如何从任何其他时区获取以前已知的时区的时间,
gmtime()
是完美的解决方案..我知道。问题仍然是要知道两个时区(CDT和另一个时区)之间的偏移量是多少。如果你知道格林尼治标准时间(偏移量0),你就不关心你所在的时区或偏移量是多少——CDT和格林尼治标准时间之间的偏移量是恒定的。他很可能想关心夏令时。当CDT无效时,知道CDT的偏移量是相当愚蠢的。好吧,他关心的是两个时区。本地和CDT。最有可能的是,在CDT中,他实际上指的不是中央夏令时,而不关心夏令时的变化,因为这会很奇怪。也许这个问题需要进一步澄清。我的理解是,他想“知道目前的时间”。在这种情况下,您只需要知道UTC时间和UTC偏移量。在这种情况下,您不需要关心当地时间。是的。但是,如果他关心夏令时,唯一可靠地知道偏移量的方法是使用时区数据库。因此,我的答案仍然是正确的。CDT指的是“中央夏时制”,你想知道CDT中的时间,即使CDT不起作用?是的,我正在使用的应用程序使用它。这太愚蠢了。但至少这不是你的愚蠢OP可能只需要:
datetime.now(pytz.timezone('US/Central'))
。本地时区并不重要。