我正在读取时间变量用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中的闰年约定?
提前感谢您的帮助!
答案 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