How to get python to display current time (eastern)
如何让python在东方显示时间?
我已经看过了Python文档,但它非常混乱。我使用的是python 3。
谢谢。
当然,还有一种更直观的方法:
1 2 3 4 5 6 | from datetime import datetime from pytz import timezone tz = timezone('EST') datetime.now(tz) ## this returns a datetime object pointing to right now ## according to the timezone info object handed in as the tz variable. |
或者,您可以定义自己的
1 | datetime(2016, 3, 30, 11, 13, 24, tzinfo=tz) |
如果您需要很多时区,并且需要正确处理夏令时的重复小时数(即从午夜到凌晨1点发生的情况),则应使用包
但对于一些简单的事情,创建自己的时区类就足够简单了:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import datetime class EST5EDT(datetime.tzinfo): def utcoffset(self, dt): return datetime.timedelta(hours=-5) + self.dst(dt) def dst(self, dt): d = datetime.datetime(dt.year, 3, 8) #2nd Sunday in March self.dston = d + datetime.timedelta(days=6-d.weekday()) d = datetime.datetime(dt.year, 11, 1) #1st Sunday in Nov self.dstoff = d + datetime.timedelta(days=6-d.weekday()) if self.dston <= dt.replace(tzinfo=None) < self.dstoff: return datetime.timedelta(hours=1) else: return datetime.timedelta(0) def tzname(self, dt): return 'EST5EDT' dt = datetime.datetime.now(tz=EST5EDT()) |
这里,您使用抽象基类
btw上面的模板是从
不知道"让python在东方显示时间"是什么意思,但使用上面最后一行中的
1 2 3 4 5 6 7 8 9 10 11 | In [15]: print(dt) 2012-07-29 12:28:59.125975-04:00 In [16]: print(dt.strftime('%Y-%m-%d %H:%M:%S')) 2012-07-29 12:28:59 In [17]: print(dt.strftime('%H:%M:%S')) 12:28:59 In [18]: print(dt.strftime('%s.%f')) 1343579339.125975 |
Pytz图书馆应该是有用的。使用下面代码的pytz(支持>2.3)可以根据东部时区获得时间。
1 2 3 4 5 6 7 8 | from datetime import datetime, timedelta from pytz import timezone import pytz eastern = timezone('US/Eastern') fmt = '%Y-%m-%d %H:%M:%S %Z%z' loc_dt = eastern.localize(datetime(2012, 10, 29, 6, 0, 0)) print loc_dt.strftime(fmt) |
如果需要整个时间戳:
1 2 | import datetime print (datetime.datetime.utcnow() - datetime.timedelta(hours=4)) |
如果您只需要YYMMDD格式的日期
1 | print (datetime.datetime.utcnow() - datetime.timedelta(hours=4)).strftime('%Y%m%d') |