您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

将unixtime转换为datetime对象,然后再次返回(成对的时间转换函数对)

将unixtime转换为datetime对象,然后再次返回(成对的时间转换函数对)

您是正确的,此行为与夏时制有关。避免这种情况的最简单方法是确保您使用的时区没有夏令时,UTC在这里最有意义。

datetime.datetime.utcfromtimestamp()calendar.timegm()处理UTC时间,这是完全相反的。

import calendar, datetime

# Convert a unix time u to a datetime object d, and vice versa
def dt(u): return datetime.datetime.utcfromtimestamp(u)
def ut(d): return calendar.timegm(d.timetuple())

datetime.datetime.fromtimestamp()来自文档的以下是一些解释,为什么夏时制会有问题:

返回与POSIX时间戳相对应的本地日期和时间,例如time.time()。如果可选参数tz为None或未指定,则时间戳将转换为平台的本地日期和时间,并且返回的datetime对象是天真的。

这里的重要部分是您获得了一个幼稚的datetime.datetime对象,这意味着没有时区(或夏令时)信息作为该对象的一部分。这意味着,如果您正好选择夏令时回滚期间的时间,则datetime.datetime在使用时,多个不同的时间戳可以映射到同一对象fromtimestamp()

>>> datetime.datetime.fromtimestamp(1004260000) 
datetime.datetime(2001, 10, 28, 1, 6, 40)
>>> datetime.datetime.fromtimestamp(1004256400)
datetime.datetime(2001, 10, 28, 1, 6, 40)
其他 2022/1/1 18:44:23 有448人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶