python日期时间中的闰年约定

python日期时间中的闰年约定,python,datetime,leap-year,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.da

我正在读取数据,其中时间变量是用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中“关闭”闰年约定


提前感谢您的帮助

我认为你的评估是错误的,闰年没有被正确使用,你列出的所有样本都是一致的。你需要考虑的只是一些补偿。不必知道偏移量是多少,只需从已知的日期和小时数开始

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

没有办法在
日期时间中关闭闰年,但有一种方法可以更正时间戳。你能再举几个例子吗,特别是几年后的例子吗?简短的回答是否定的。Python似乎有一些udunits接口,例如
17584272.0/24.0/365.0==2007.34
,这意味着如果没有闰日,日期应该是2007年的三分之一(即4月的某个时候)1.你怎么知道那是2007年1月1日?@MarkRansom这里还有一些例子:1/1/1990=1.7435256E7,1/1/1995=1.747908E7,1/1/2000=1.7522904E7,1/1/2013=1.763688E7谢谢!