#calendar #gregorian-calendar #julian-calendar #julian-day

bin+lib julian

在儒略日数和儒略日历及格里高利历之间进行转换

6 个版本 (破坏性更新)

0.5.0 2023年12月22日
0.4.0 2023年11月22日
0.3.1 2023年5月15日
0.2.0 2023年5月13日
0.1.0 2023年5月2日

#87日期和时间

Download history 3/week @ 2024-04-28 3/week @ 2024-05-05 6/week @ 2024-05-12 40/week @ 2024-05-19 11/week @ 2024-05-26 6/week @ 2024-06-02 7/week @ 2024-06-09 9/week @ 2024-06-16 1/week @ 2024-06-23 40/week @ 2024-06-30 8/week @ 2024-07-14 118/week @ 2024-07-28

132 每月下载量
cffdrs 中使用

MIT 许可证

1MB
22K SLoC

Project Status: Active – The project has reached a stable, usable state and is being actively developed. CI Status codecov.io Minimum Supported Rust Version MIT License

GitHub | crates.io | 文档 | 问题 | 变更日志

julian 是一个 Rust 库,用于在 儒略日数格里高利日历(前推或指定日期发生改革)以及/或前推的 儒略日历 之间的日期进行转换。还提供了查询有关“改革”格里高利日历中年和月以及它们如何受您选择的日历改革日期影响的功能。

示例

在构造日期之前,您必须首先选择一个日期计算所用的日历。`Calendar::GREGORIAN` 是前推的格里高利日历,它应该简单且足够有用,适用于大多数基本用途。

要转换儒略日数到日历中的日期,使用 `Calendar::at_jdn()` 方法,如下所示

use julian::{Calendar, Month};

let cal = Calendar::GREGORIAN;
let date = cal.at_jdn(2460065);
assert_eq!(date.year(), 2023);
assert_eq!(date.month(), Month::April);
assert_eq!(date.day(), 30);

因此,儒略日数 2460065 在前推的格里高利日历中是2023年4月30日。

要将日期转换为儒略日数,使用 `Calendar::at_ymd()` 构建日期,然后调用其 `julian_day_number()` 方法

use julian::{Calendar, Month};

let cal = Calendar::GREGORIAN;
let date = cal.at_ymd(2023, Month::April, 30).unwrap();
assert_eq!(date.julian_day_number(), 2460065);

有关更多信息,请参阅 文档

命令

julian 还提供了一个同名的命令,用于在儒略日数和儒略风格日历中的日期之间进行转换。要安装此命令到您的系统,请运行

cargo install julian

用法

julian [<options>] [<date> ...]

在没有参数的情况下调用 julian 命令时,将显示前推的格里高利日历和 UTC 时区中的当前日期以及相应的儒略日数。

当使用一个或多个参数调用 julian 时,任何以 "YYYY-MM-DD" 或 "YYYY-JJJ" 格式的日历日期参数将被转换为儒略日数,任何整数参数被视为儒略日数并转换为日历日期。默认情况下,日期使用拟制的格里历读取和写入,但可以通过 --julian--reformation 选项来更改。

julian 使用 天文年代编号,公元前1年(公元1年之前的一年)在输入和输出时表示为年份0(显示为 "0000"),而那之前的一年(通常称为公元前2年)表示为-1(显示为 "-0001")。此外,年份的开始始终被认为是1月1日,尽管 历史上并非所有使用儒略历的用户都遵循这一惯例

选项

  • -c--countries — 列出 -/--reformation 选项所识别的国家代码。输出是一个具有以下列的表格

    • "Code" — 由 --reformation 接受的两个字母国家代码
    • "Country" — 该国的英文名称(或其常见变体)
    • "Reformation" — 该国首次观察到的格里历日期的儒略日数
    • "Last Julian" — 改革前一天的旧式日历日期
    • "First Gregorian" — 改革当天的新式日历日期

    国家改革日期数据库来源于 截至2023-04-26的 Debian 版本的 ncal.c,因此对于任何历史不准确之处,请责备 Debian。

  • ---help — 显示命令行选项摘要并退出

  • ---julian — 使用拟制的儒略历读取和写入日期

  • ---json — 输出 JSON。有关更多信息,请参阅下面的 JSON 输出

  • ---ordinal — 以 "YYYY-JJJ" 的形式输出日历日期,其中破折号后面的部分是年份中的天数(从 001 到 366,即序数日期)

  • ---quiet — 在每个输出值之前不打印输入值。在儒略日数之前不打印 "JDN"。

  • -<jdn>--reformation <jdn> — 使用改革历读取和写入日期,其中格里历首次在给定的儒略日数日期观察

    可以用两个字母的国家代码(不区分大小写)代替 JDN,以使用在该国观察到的历法改革。运行 julian -- 获取识别的国家代码及其对应日期的列表。

  • -s, --style — 在改历日历中标记日期为“O.S.”(旧风格)或“N.S.”(新风格)”。当未指定 -r/--reformation 或指定 -o/--ordinal 时,无效果。

  • -V, --version — 显示程序版本并退出

JSON 输出

当使用 julian-J/--json 选项调用时,它将输出所选日历和输入/输出值的 JSON 分解。输出结构是一个对象,包含两个键,"calendar""dates"

  • "calendar" — 表示 julian 调用所选的日历类型。这是一个对象,始终包含至少一个键 "type",其值是 "gregorian"(默认的拟历公历),"julian"(拟历儒略历)或 "reforming"(改历)。当 "type""reforming" 时,将有一个额外的字段 "reformation",其值是日历首次遵循公历的日期的儒略日数。

  • "dates" — 对象列表,每个参数对应一个对象(如果没有给出参数,则为当前日期的一个对象)。每个对象包含以下字段,描述由参数表示的日期,无论参数是日历日期还是儒略日数

    • "julian_day_number" — 日期的儒略日数
    • "year" — 日期的年份
    • "month" — 日期月份的编号(1-12)
    • "day" — 日期的月日(1-31)
    • "ordinal" — 日期的一月一日年序号(1-366)
    • "display" — “YYYY-MM-DD”格式的日期
    • "ordinal_display" — “YYYY-JJJ”格式的日期
    • "old_style" — 仅当使用的日历是改历日历时才存在此字段。如果日期发生在日历改历之前,则为 true,否则为 false

依赖关系

~0.3–1.4MB
~26K SLoC