使用datetime直接构造时间的时候,设置时区是没有北京时间的,通常来讲习惯了linux的同志都会默认用上海时间来代替,这里却有一个问题,若是要进行时区转换,上海时间比北京时间差6分钟。。。 好比: tz = pytz.timezone('Asia/Shanghai') t = datetime.datetime(2015, 9, 5, 9, 0, 0, 0, tzinfo=tz) 这样打印出来获得的时间是: 2015-09-07 09:00:00+08:06 在django框架中,貌似from django.utils.timezone import localtime的这个localtime会修正那6分钟,这问题就来了,要本身在程序里构造时间,而且跟用这个localtime转化的时间对比的时候巨麻烦。 解决方法: tz = pytz.timezone('Asia/Shanghai') t = datetime.datetime(start_time.year, start_time.month, start_time.day, 9, 0, 0, 0) t = tz.localize(t) 这样打印出来的就没有那个讨厌的:06了。 2015-09-07 09:00:00+08:00