如何自己将unixtime转为datetime
How to convert unixtime to datetime by oneself
我想在不使用 datetime.fromtimestamp 的情况下将 unixtime 转换为 datetime。
你知道如何在 Python 中创建将 unixtime 转换为 datetime 的方法吗?
我强烈建议您不要这样做,至少在您对问题集有更广泛的了解之前不要这样做。一个非常天真的方法可能看起来像这样(不要使用这个!):
def timestamp_to_datetime(ts):
year = 1970 + ts // (60*60*24*365)
day_in_year = ts % (60*60*24*365) // (60*60*24)
hour = ts % (60*60*24*365) % (60*60*24) // (60*60)
minute = ts % (60*60*24*365) % (60*60*24) % (60*60) // 60
second = ts % (60*60*24*365) % (60*60*24) % (60*60) % 60
month = day_in_year // 30
day = day_in_year % 30
return datetime(year=year, month=month, day=day, hour=hour,
minute=minute, second=second)
当然,这个简单函数的结果与正确日期相去甚远。我们假设每个月有 30 天只是这里的冰山一角。
- 没有闰年:因此我们单独休息了 13 天
- 无时区:是 UTC 时间戳吗?当地时间?哪一个?
- 否leap seconds:结果会以微妙的方式关闭
- 对于负时间戳,我们在
datetime()
构造函数中得到负 day_in_year
和直接 ValueError
。您需要分别处理这些情况。
- 我可能忘记的事情,因为日期和时间是很糟糕的事情,我很高兴其他更有能力的人编写了帮助程序库以供使用。
我想在不使用 datetime.fromtimestamp 的情况下将 unixtime 转换为 datetime。
你知道如何在 Python 中创建将 unixtime 转换为 datetime 的方法吗?
我强烈建议您不要这样做,至少在您对问题集有更广泛的了解之前不要这样做。一个非常天真的方法可能看起来像这样(不要使用这个!):
def timestamp_to_datetime(ts):
year = 1970 + ts // (60*60*24*365)
day_in_year = ts % (60*60*24*365) // (60*60*24)
hour = ts % (60*60*24*365) % (60*60*24) // (60*60)
minute = ts % (60*60*24*365) % (60*60*24) % (60*60) // 60
second = ts % (60*60*24*365) % (60*60*24) % (60*60) % 60
month = day_in_year // 30
day = day_in_year % 30
return datetime(year=year, month=month, day=day, hour=hour,
minute=minute, second=second)
当然,这个简单函数的结果与正确日期相去甚远。我们假设每个月有 30 天只是这里的冰山一角。
- 没有闰年:因此我们单独休息了 13 天
- 无时区:是 UTC 时间戳吗?当地时间?哪一个?
- 否leap seconds:结果会以微妙的方式关闭
- 对于负时间戳,我们在
datetime()
构造函数中得到负day_in_year
和直接ValueError
。您需要分别处理这些情况。 - 我可能忘记的事情,因为日期和时间是很糟糕的事情,我很高兴其他更有能力的人编写了帮助程序库以供使用。