如何自己将unixtime转换为datetime

时间:2018-04-13 10:06:27

标签: python python-2.7 datetime unix-timestamp

我想在不使用datetime.fromtimestamp的情况下将unixtime转换为datetime。

你知道如何在Python中创建一个将unixtime转换为datetime的方法吗?

1 个答案:

答案 0 :(得分:0)

我强烈建议您不要这样做,至少在您对问题集有更广泛的了解之前。一个非常天真的方法可能看起来像这样(不要使用它!):

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:结果将以微妙的方式关闭
  • 对于负时间戳,我们在day_in_year构造函数中得到负ValueErrordatetime()。你需要单独处理这些案件。
  • 我可能会忘记的事情,因为日期和时间都是很糟糕的事情,我很高兴其他更有能力的人写了帮助库来使用。