Python 如何将相对日期转换为绝对日期?

Python 如何将相对日期转换为绝对日期?,python,datetime,netcdf,Python,Datetime,Netcdf,我正在通过Python查看一个netcdf文件,netcdf文件上的日期是138276,这是自2000-01-01 00:00:00以来的小时数。这个日期是10月7日。如何将2000-01-01 00:00:00之后的138276小时的日期转换为2015-10-07 00:00:00的格式?您可以使用将字符串解析为datetime对象,然后构造一个对象,并设置paramhours=your_val以添加所需的小时数: In [25]: import datetime as dt dt.datet

我正在通过Python查看一个netcdf文件,netcdf文件上的日期是138276,这是自2000-01-01 00:00:00以来的小时数。这个日期是10月7日。如何将2000-01-01 00:00:00之后的138276小时的日期转换为2015-10-07 00:00:00的格式?

您可以使用将字符串解析为datetime对象,然后构造一个对象,并设置param
hours=your_val
以添加所需的小时数:

In [25]:
import datetime as dt
dt.datetime.strptime('2000-01-01 00:00:00', '%Y-%m-%d %H:%M:%S') + dt.timedelta(hours=138276)

Out[25]:
datetime.datetime(2015, 10, 10, 12, 0)

我不清楚您是如何在
2015-10-10
时达到目标日期
2015-010-07

由于开始日期是恒定的,所以创建一个datetime对象,只需添加您想要的时间:


答案也是
2105-10-10
2015-10-07
timedelta
适当增加小时数。你的约会计算有点不准确

from datetime import datetime, timedelta

old_date = '2000-01-01'

curr_date = datetime.strptime(old_date, '%Y-%m-%d') + timedelta(hours=138276 )

print(curr_date)

2015-10-10 12:00:00
要更改输出格式,请将当前日期更改为:

print(curr_date.strftime('%Y%m%d%H'))

2015101012

如果您使用的是netCDF4软件包,则应使用该函数

In [1]: from netCDF4 import num2date

In [2]: date = num2date(138276, 'hours since 2000-01-01 00:00:00', calendar='standard')

In [3]: date
Out[3]: datetime.datetime(2015, 10, 10, 12, 0)

最有可能的是,您的netCDF时间变量中还包含单位和日历,因此您可能不需要硬编码这些单位和日历。事实上,num2date函数将获取一个日期列表或数组。

不确定在将这些小时添加到该日期/时间后,您是如何得到的
2015-10-07 00:00:00
?如何将日期从格式YYYY-MM-DD HH:MM:SS转换为YYYYMMDDHH?请检查我的编辑。您需要实现
strftime
In [1]: from netCDF4 import num2date

In [2]: date = num2date(138276, 'hours since 2000-01-01 00:00:00', calendar='standard')

In [3]: date
Out[3]: datetime.datetime(2015, 10, 10, 12, 0)