Python:纽约的当前日期/时间是什么?(不使用pytz)
在Python中,我想写一个程序来获取纽约的当前日期和时间。这可行吗?虽然使用datetime.datetime.now()可以获取本地时间,datetime.utcnow()可以获取UTC(格林威治标准时间)。但是,仅仅看它们之间的差别并不能解决问题,因为夏令时会影响时间。
我尝试了一些方法,比如“dt=datetime.now()”和“dt.timetuple()”,结果即使我改变了电脑的日期,tm_isdst的值仍然是-1。
我把电脑的时钟从一月份改成了七月份,结果tm_isdst还是-1。
为什么不使用pytz库呢?我希望用户不需要下载额外的库。
相关问题:
2 个回答
0
如果你不在纽约的同一个时区,实际上很难处理时间问题,特别是你需要知道时区和夏令时(DST)变化的具体时间。你当然不能死死地把时间写死为纽约的时间,但其实更简单的方法是安装一些库,比如pytz或dateutil,这样你就不只局限于纽约的时间了。
0
我怀疑你在使用 datetime、time 等模块时遇到了一些问题,不过我现在了解的情况不多,帮不了你太多。
接下来的建议有一些明显的缺点,我还是建议你多花点时间去解决 datetime 等模块的问题。不过,如果你确定有网络连接,并且需要快速完成某件事情,你可以用类似下面的方式查询 USNO 时间:
import urllib
f = urllib.urlopen("http://tycho.usno.navy.mil/cgi-bin/timer.pl")
time_page = f.readlines()
for line in time_page:
if line.find("Eastern Time") != -1:
ny_time = line[4:24]
break
print ny_time
输出的结果看起来像这样:
1月19日,下午05:18:04
这个方法利用了纽约市位于东部时区的事实。此外,它还假设 USNO 服务器对你是可用的。还有,它对返回内容的格式也有一些假设。我不知道这个格式是否会变化,或者变化的频率如何。如果你打算频繁使用这个方法,请找其他服务器,因为你可不想让 USNO 服务器瘫痪!(这句本来不是故意的,不过我意识到了并保留了。:-)