You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将1961年1月1日以来的天数转换为年份与儒略日?

时间序列日期格式转换问题

我有一份时间序列数据集,需要转换日期格式。当前的time字段值代表自1961年1月1日(ddmmyyyy格式为01011961)以来的天数。我需要把它转换成两个值:年份和儒略日。

我尝试用下面的Python公式计算,但因为闰年的影响,得到的日期有偏差:

year = [int(1961 + (x/365)) for x in time]
date = [int((x) - (((year[0]-1961)*365)+9))for x in time] # 加9是为了抵消之前的闰年影响,但效果不对

靠谱的转换方法(用Python内置datetime模块)

别自己算闰年了,直接用Python标准库的datetime模块处理,这是最稳妥的方式:

  • 先把天数偏移转换成具体日期:用datetime.date(1961, 1, 1)作为起始点,加上timedelta(days=x)就能得到目标日期对象。
  • 从日期对象里直接提取年份和儒略日:年份取date.year,儒略日用date.timetuple().tm_yday(这个值会自动适配闰年)

示例代码:

from datetime import date, timedelta

def days_to_year_julian(x):
    start = date(1961, 1, 1)
    target = start + timedelta(days=x)
    return target.year, target.timetuple().tm_yday

# 测试案例
print(days_to_year_julian(0))    # 输出 (1961, 1),对应1961年1月1日
print(days_to_year_julian(365))  # 输出 (1962, 1),对应1962年1月1日
print(days_to_year_julian(366))  # 输出 (1962, 2),对应1962年1月2日

手动计算出错的原因

闰年的规则是:能被4整除但不能被100整除,或者能被400整除的年份。手动计数1961年之后的闰年数量很容易出错,尤其是当x值很大的时候,偏差会越来越大。用内置模块能完全规避这个问题,不用自己维护闰年规则。


内容的提问来源于stack exchange,提问作者raherin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 00:42:20