为什么Python的datetime.time有tzinfo参数?

时间:2016-02-13 18:34:39

标签: python datetime pytz python-datetime

Python的内置模块

datetime有一些类。

但我无法理解datetime.time类的参数。

time班级有tzinfo个参数,默认为None

我想知道为什么time类需要时区信息。

如果是datetime类,它有.astimezone方法,我们可以按时区信息更改数据。但是time类没有类似.astimezone的方法。

是否仅为datetime.combine classmethod保留?还是有一些关于时间和时区的重要故事?

2 个答案:

答案 0 :(得分:1)

  

我想知道为什么时间类需要时区信息。

我发现它很有用,例如如果我们处理同一时间发生的事件而不管日期(例如预定的工作),并且需要在不同的时区进行显示,操作和比较。

如何获取支持TZ的datetime.time对象

  

<强> datetime.timetz()

     

以相同的小时,分​​钟,秒返回时间对象,   微秒和tzinfo属性。另见方法时间()。

对于我的示例用例,我使用datetime.time从我的tz感知datetime.datetime对象中提取datetime.datetime.timetz()对象,这样可以保留它tzinfo

这适用于datetime.time对象,而不是同时包含日期信息的datetime.datetime对象。

  

但是时间类没有类似.astimezone的方法。

您无法仅使用时间进行TZ转换

至于没有time.astimezone()的原因,我认为可能是因为没有日期,就无法猜测DST转换和其他非固定UTC偏移的影响。

答案 1 :(得分:0)

time类使用tzinfo进行比较和操作。例如,美国/太平洋上午9:00不等于美国/东部时间上午9:00。此外,如果您将意识与天真的时间进行比较,即将美国/太平洋的上午9:00与“上午9:00”进行比较,则python可能会引发TypeError

来自the docs

  

时间的比较,其中当a在时间b之前时a被认为小于b。如果一个comparand是天真的而另一个是比较的,那么如果尝试进行订单比较,则会引发TypeError。对于相等比较,天真实例永远不等于意识实例。