python datetime中的闰年约定

时间:2014-06-19 21:38:22

标签: python datetime leap-year

我正在读取时间变量用udunits编码的数据。这意味着时间变量是1-1-1 00:00:00以来的小时数,但是,它不遵循标准的闰年约定。

我试图将1-1-1 00:00:00以来的小时数转换为python datetime对象,但最终得到的答案不正确,因为datetime确实遵循闰年约定。例如:

t_data = 17584272    # This is time stamp for January 1st, 2007 in the data file
day = datetime.datetime(1,1,1) + datetime.timedelta(hours=t_data)
print(day)

结果:

>>> 2007-01-03 00:00:00

有没有办法甩掉' python datetime中的闰年约定?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我认为您在评估中错误地认为闰年没有得到正确使用,您列出的所有样本都是一致的。您需要考虑一些偏移量。没有必要知道偏移是什么,你只需从一个已知的日期和小时数字开始。

def udtimestamp(hours):
    return datetime.datetime(1990,1,1) + datetime.timedelta(hours=hours-17435256)

>>> for x in (17584272,1.7435256E7,1.747908E7,1.7522904E7,1.763688E7):
    print udtimestamp(x)

2007-01-01 00:00:00
1990-01-01 00:00:00
1995-01-01 00:00:00
2000-01-01 00:00:00
2013-01-01 00:00:00