2024-05-06 13:17:59 发布
网友
我想把GMT时间转换成EST时间并得到时间戳。我试过以下操作,但不知道如何设置时区。
time = "Tue, 12 Jun 2012 14:03:10 GMT" timestamp2 = time.mktime(time.strptime(time, '%a, %d %b %Y %H:%M:%S GMT'))
如果是本地时区,并且给定时间的时区规则与现在相同,则可以使用仅限stdlib的解决方案(某些边缘情况除外):
#!/usr/bin/env python from email.utils import parsedate_tz, mktime_tz from datetime import datetime timestamp = mktime_tz(parsedate_tz("Tue, 12 Jun 2012 14:03:10 GMT")) print(datetime.fromtimestamp(timestamp)) # -> 2012-06-12 10:03:10
否则,您需要来自历史时区数据库的数据来获得正确的utc偏移量。^{} module提供对the tz database的访问:
#!/usr/bin/env python from email.utils import parsedate_tz, mktime_tz from datetime import datetime import pytz # $ pip install pytz timestamp = mktime_tz(parsedate_tz("Tue, 12 Jun 2012 14:03:10 GMT")) eastern_dt = datetime.fromtimestamp(timestamp, pytz.timezone('America/New_York')) print(eastern_dt.strftime('%a, %d %b %Y %H:%M:%S %z (%Z)')) # -> Tue, 12 Jun 2012 10:03:10 -0400 (EDT)
注意:POSIX timestamp在世界各地都是一样的,也就是说,如果你想找到时间戳,你的本地时区并不重要(除非你的时区是“正确的”类型)。这里是如何convert a utc time to the timestamp。
timestamp
使用pytz
from datetime import datetime from pytz import timezone fmt = "%Y-%m-%d %H:%M:%S %Z%z" now_time = datetime.now(timezone('US/Eastern')) print now_time.strftime(fmt)
时区并没有内置到标准的Python中—您需要使用另一个库。pytz是个不错的选择。
>>> gmt = pytz.timezone('GMT') >>> eastern = pytz.timezone('US/Eastern') >>> time = "Tue, 12 Jun 2012 14:03:10 GMT" >>> date = datetime.datetime.strptime(time, '%a, %d %b %Y %H:%M:%S GMT') >>> date datetime.datetime(2012, 6, 12, 14, 3, 10) >>> dategmt = gmt.localize(date) >>> dategmt datetime.datetime(2012, 6, 12, 14, 3, 10, tzinfo=<StaticTzInfo 'GMT'>) >>> dateeastern = dategmt.astimezone(eastern) >>> dateeastern datetime.datetime(2012, 6, 12, 10, 3, 10, tzinfo=<DstTzInfo 'US/Eastern' EDT-1 day, 20:00:00 DST>)
如果是本地时区,并且给定时间的时区规则与现在相同,则可以使用仅限stdlib的解决方案(某些边缘情况除外):
否则,您需要来自历史时区数据库的数据来获得正确的utc偏移量。^{} module 提供对the tz database的访问:
注意:POSIX
timestamp
在世界各地都是一样的,也就是说,如果你想找到时间戳,你的本地时区并不重要(除非你的时区是“正确的”类型)。这里是如何convert a utc time to the timestamp。使用pytz
时区并没有内置到标准的Python中—您需要使用另一个库。pytz是个不错的选择。
相关问题 更多 >
编程相关推荐