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

Unix环境下公历日期转换为Julian Date(儒略日期)的实现脚本获取

公历日期转儒略日期(年积日格式)实现脚本

以下提供不同环境下可直接使用的实现脚本,支持将10-Nov-2020这类格式的公历日期,转换为2020314格式的儒略日期(4位年份+3位当年累计天数)。

Python 实现(跨平台通用)

依赖Python标准库,无需额外安装第三方包:

from datetime import datetime
import pytz # 如需指定时区可安装pytz包,无时区需求可省略

def gregorian_to_julian(date_str: str, input_format: str = "%d-%b-%Y", use_utc: bool = True) -> str:
    date_obj = datetime.strptime(date_str, input_format)
    if use_utc:
        date_obj = date_obj.replace(tzinfo=pytz.UTC)
    # 拼接年份+3位补零的年累计天数
    return f"{date_obj.year}{date_obj.timetuple().tm_yday:03d}"

# 测试示例
print(gregorian_to_julian("10-Nov-2020")) # 输出 2020314

批量处理全文件版本(假设输入文件每行是一个待转换的日期):

INPUT_PATH = "输入文件路径.txt"
OUTPUT_PATH = "输出文件路径.txt"

with open(INPUT_PATH, "r", encoding="utf-8") as in_f, open(OUTPUT_PATH, "w", encoding="utf-8") as out_f:
    for line in in_f:
        raw_date = line.strip()
        if not raw_date:
            out_f.write(line)
            continue
        out_f.write(gregorian_to_julian(raw_date) + "\n")

Bash 实现(适用于Linux/macOS环境)

直接调用系统date命令,无需额外依赖:

# 单行转换示例
input_date="10-Nov-2020"
# 加TZ=UTC指定时区避免时差导致的天数偏差
julian_date=$(TZ=UTC date -d "$input_date" +"%Y%j")
echo $julian_date # 输出 2020314

批量处理全文件版本:

while IFS= read -r line; do
  [ -z "$line" ] && echo "$line" && continue
  TZ=UTC date -d "$line" +"%Y%j"
done < 输入文件路径.txt > 输出文件路径.txt

注意:如果输入日期格式不是日-月份缩写-年,只需调整解析规则即可:

  • Python中修改strptime的第二个参数,例如%Y-%m-%d对应2020-11-10格式
  • Bash中如果输入格式无法被系统直接识别,先做字符串替换后再调用date命令解析

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:54:05