datetime
有一些类。
但我无法理解datetime.time
类的参数。
time
班级有tzinfo
个参数,默认为None
。
我想知道为什么time
类需要时区信息。
如果是datetime
类,它有.astimezone
方法,我们可以按时区信息更改数据。但是time
类没有类似.astimezone
的方法。
是否仅为datetime.combine
classmethod保留?还是有一些关于时间和时区的重要故事?
答案 0 :(得分:1)
我想知道为什么时间类需要时区信息。
我发现它很有用,例如如果我们处理同一时间发生的事件而不管日期(例如预定的工作),并且需要在不同的时区进行显示,操作和比较。
datetime.time
对象<强> datetime.timetz()强>
以相同的小时,分钟,秒返回时间对象, 微秒和tzinfo属性。另见方法时间()。
对于我的示例用例,我使用datetime.time
从我的tz感知datetime.datetime
对象中提取datetime.datetime.timetz()
对象,这样可以保留它tzinfo
这适用于datetime.time
对象,而不是同时包含日期信息的datetime.datetime
对象。
但是时间类没有类似.astimezone的方法。
至于没有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。对于相等比较,天真实例永远不等于意识实例。