【问题标题】:Python Timedelta Arithmetic With noleap CalendarsPython Timedelta 算术与 noleap 日历
【发布时间】:2016-11-24 14:37:26
【问题描述】:

我正在处理时间单位为“自 1850 年 1 月 1 日以来的天数”的 CMIP5 数据。要在文件中找到我正在使用的当前日期,我通常会从 1-1-1850 和我正在使用的数据点的时间值(以天为单位)进行时间增量相加。但是,CMIP5(或至少我正在使用的文件)使用“noleap”日历,这意味着所有年份都只有 365 天。

在我目前的情况下,在处理对应于 1980 年 1 月 1 日的数据点时,我将其时间参数 47450 天添加到 1850 年 1 月 1 日的原始日期。但是,我得到了 12 月 1 日的答案, 1979 年,因为排除了 1850 年到 1980 年之间的所有 2 月 29 日。在 timedelta 或 datetime 中是否有一个额外的参数来处理排除闰日的日历?

【问题讨论】:

    标签: python datetime time-series netcdf timedelta


    【解决方案1】:

    netCDF num2date 是您要查找的函数:

    import netCDF4
    
    ncfile = netCDF4.Dataset('./foo.nc', 'r')
    time = ncfile.variables['time'] # note that we do not cast to numpy array yet
    time_convert = netCDF4.num2date(time[:], time.units, time.calendar)
    

    请注意,CMIP5 模型没有标准日历,因此在进行此转换时包含 time.calendar 参数很重要。

    【讨论】:

    • 这么有用的工具,我不知道。谢谢,@N1B4!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    • 2020-11-23
    • 2012-12-10
    相关资源
    最近更新 更多