6

我经常旅行,但住在纽约市,无论我身在何处,我都试图显示纽约市的时间。我如何在 Python 中做到这一点?我有以下,这不起作用,给我错误:

 `'module' object is not callable` 

另外,我不确定我下面的方法是否会正确更新夏令时:

import pytz
utc = pytz.utc
utc_dt = datetime(2002, 10, 27, 6, 0, 0, tzinfo=utc)
eastern = pytz.timezone('US/Eastern')
loc_dt = utc_dt.astimezone(eastern)
fmt = '%Y-%m-%d %H:%M:%S %Z%z'
loc_dt.strftime(fmt)
4

4 回答 4

16

而不是datetime,写datetime.datetime

import datetime
import pytz

utc = pytz.utc
utc_dt = datetime.datetime(2002, 10, 27, 6, 0, 0, tzinfo=utc)
eastern = pytz.timezone('US/Eastern')
loc_dt = utc_dt.astimezone(eastern)
fmt = '%Y-%m-%d %H:%M:%S %Z%z'
loc_dt.strftime(fmt)

那是因为模块datetime包含一个 class datetime.datetime

于 2012-08-08T21:53:01.100 回答
8

您可以通过以下方式使用该方法获取datetime特定时区中当前时间的对象:now()

import datetime, pytz
nyc_datetime = datetime.datetime.now(pytz.timezone('US/Eastern'))
于 2017-07-03T13:39:19.227 回答
5

像这样编写导入更简洁:

from datetime import datetime
import pytz
now = datetime.now(tz=pytz.timezone('US/Eastern'))

这允许在代码中进一步重复使用 datetime,而不必每次都使用 datetime.datetime。还避免了不必要地导入整个 datetime 模块。

另请注意,根据 IANA,“美国/东部”已被弃用。也许考虑“美国/纽约”

于 2020-04-21T19:54:22.863 回答
2

我会这样做:

import datetime
import pytz
now = datetime.datetime.now(tz=pytz.timezone('US/Eastern'))
print("now time is: ", now)
current_hour = now.hour
current_minute = now.minute
current_second = now.second
current_weekday = now.weekday()
于 2016-11-06T23:26:04.270 回答