我试图将tzinfo应用于日期时间对象。Python日期时间和tzinfo对象(改变分钟而不是几小时)
In [1]: from datetime import datetime
In [2]: import pytz
In [3]: london = pytz.timezone("Europe/London")
In [4]: london
Out[5]: <DstTzInfo 'Europe/London' LMT-1 day, 23:59:00 STD>
In [6]: localized_date_object = datetime(2016, 1, 1, 11, 30, 0, 5000, london)
In [7]: localized_date_object
Out[8]: datetime.datetime(2016, 1, 1, 11, 30, 0, 5000, tzinfo=<DstTzInfo 'Europe/London' LMT-1 day, 23:59:00 STD>)
In [9]: utc_date_object = localized_date_object.astimezone(pytz.utc)
In [10]: utc_date_object
Out[11]: datetime.datetime(2016, 1, 1, 11, 31, 0, 5000, tzinfo=<UTC>)
In [16]: paris = pytz.timezone("Europe/Paris")
In [17]: localized_date_object = datetime(2016, 1, 1, 11, 30, 0, 5000, paris)
In [18]: utc_date_object = localized_date_object.astimezone(pytz.utc)
In [19]: utc_date_object
Out[19]: datetime.datetime(2016, 1, 1, 11, 21, 0, 5000, tzinfo=<UTC>)
正如您所看到的,它将增量应用于分钟而不是小时。
有人可以解释我在这里做错了吗?
谢谢你吉日。所以对于伦敦来说,冬天是UTC,夏天是BST。 – Sebabouche
夏季法国的CEST;) – Sebabouche
@Sebabouche这不是为您的城市确定正确时区的问题;-)当您在某处存储时间时,还应该存储相关时区信息(CET或CEST)。 IMO的最佳做法是以UTC格式存储所有内容,并将其转换为“用户”时区。从UTC到欧洲/巴黎的BTW转换完美无缺,请参阅更新答案。 – Jiri