如何自己将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 。您需要分别处理这些情况。
  • 我可能忘记的事情,因为日期和时间是很糟糕的事情,我很高兴其他更有能力的人编写了帮助程序库以供使用。