在下面的代码中,我正在计算现在纪元和当天纪元的开始。
import time import pytz from datetime import datetime tz1 = pytz.timezone('CST6CDT') utc = pytz.timezone('UTC') now = pytz.UTC.localize(datetime.utcnow()) now_tz = now.astimezone(tz1) print now_tz print now_tz.strftime('%s') begin_day = now_tz.replace(hour=0, minute=0, second=0) print begin_day print begin_day.strftime('%s')
打印报表:
2012-08-28 13:52:21.595718-05:00 1346187141 2012-08-28 00:00:00.595718-05:00 1346137200
使用CDT时区将纪元转换为时间戳:1346187141-2012年8月28日15:52:21,1346137200-2012年8月28日02:00:00
我希望第二个纪元是一天的开始,但是现在是凌晨2点。转换为新纪元时,似乎仍在使用本地时区PST。
我究竟做错了什么 ?还是可以用其他方式做到这一点?
谢谢!
注意:我的回答是绝对错误的。 (我想删除它,但是在删除accept标志之前无法删除它。)
下面的代码演示了now_tz我们的两种方法为其产生不同结果的值。
now_tz
import calendar import pytz import datetime as dt tz1 = pytz.timezone('US/Eastern') utc = pytz.timezone('UTC') now = utc.localize(dt.datetime(2002, 10, 28), is_dst=None) now_tz = now.astimezone(tz1) now_epoch = calendar.timegm(now_tz.utctimetuple()) begin_day = tz1.normalize(now_tz.replace(hour=0, minute=0, second=0)) midnight = tz1.localize(dt.datetime.combine(now_tz, dt.time(0, 0)), is_dst=None) if begin_day != midnight: print(begin_day) # 2002-10-27 01:00:00-04:00 # my result -- is not midnight print(midnight) # 2002-10-27 00:00:00-04:00 # J.F.Sebastian's result is correct
(原始答案已编辑)