Expand description
lunar-lite is a small library for Chinese lunisolar date conversion.
It converts between the Gregorian (solar) calendar and the Chinese lunar calendar, and exposes the sexagenary cycle (六十甲子) of Heavenly Stems and Earthly Branches.
§Examples
use lunar_lite::{solar_to_lunar, lunar_to_solar, SolarDate, LunarDate};
let solar = SolarDate { year: 2024, month: 2, day: 10 };
let lunar = solar_to_lunar(solar).unwrap();
assert_eq!(lunar, LunarDate { year: 2024, month: 1, day: 1, is_leap_month: false });
// Round-trips back to the original solar date.
assert_eq!(lunar_to_solar(lunar).unwrap(), solar);§Supported range
Conversions are backed by a generated table of per-year data; years outside
the supported range return LunarError::YearOutOfRange.
§Features
serde: deriveSerialize/Deserializefor the public date and stem-branch types.
Structs§
- Four
Pillars - The four pillars (年柱, 月柱, 日柱, 时柱) of a date and time.
- Lunar
Date - A date in the Chinese lunar calendar.
- Solar
Date - A date in the Gregorian (solar) calendar.
- Stem
Branch - A valid Heavenly Stem / Earthly Branch pair in the sexagenary cycle.
- Stem
Branch Options - Options controlling the year and month pillar boundaries.
Enums§
- Earthly
Branch - One of the twelve Earthly Branches.
- Heavenly
Stem - One of the ten Heavenly Stems.
- Lunar
Error - Errors from date conversion and validation.
- Month
Divide - How to resolve the month pillar across the month boundary.
- Stem
Branch Error - Errors from constructing a
StemBranch. - Year
Divide - How to resolve the year pillar across the year boundary.
Constants§
- EARTHLY_
BRANCHES - Canonical cyclic ordering of the twelve Earthly Branches.
- HEAVENLY_
STEMS - Canonical cyclic ordering of the ten Heavenly Stems.
Functions§
- four_
pillars_ from_ solar_ date - Rust-native alias for
get_heavenly_stem_and_earthly_branch_by_solar_date(defaultExact/Exactoptions). - four_
pillars_ from_ solar_ date_ with_ options - Rust-native alias for
get_heavenly_stem_and_earthly_branch_by_solar_date_with_options. - get_
heavenly_ stem_ and_ earthly_ branch_ by_ solar_ date - Computes the four pillars for a Gregorian solar date and 时辰 index, using the
default (
StemBranchOptions::default, i.e.Exact/Exact, matchinglunar-lite@0.2.8). - get_
heavenly_ stem_ and_ earthly_ branch_ by_ solar_ date_ with_ options - Computes the four pillars for a Gregorian solar date and 时辰 index with
explicit
StemBranchOptions. - is_
early_ zi - Returns
trueiftime_indexis the early 子时 (0, 00:00–00:59). - is_
late_ zi - Returns
trueiftime_indexis the late 子时 (12, 23:00–23:59). - lunar_
to_ solar - Converts a Chinese lunar date to its Gregorian (solar) date.
- lunar_
year_ branch - Returns the Earthly Branch of a Chinese lunar year (生年支).
- lunar_
year_ stem - Returns the Heavenly Stem of a Chinese lunar year (生年干).
- lunar_
year_ stem_ branch - Returns the stem-branch of a Chinese lunar year.
- normalize_
lunar_ date - Normalizes a lunar date and verifies that it actually exists.
- solar_
to_ lunar - Converts a Gregorian (solar) date to its Chinese lunar date.
- time_
index - Returns the double-hour (時辰) index for a wall-clock time.
- time_
index_ to_ branch - Returns the Earthly Branch (时支) for a 时辰 index.
Type Aliases§
- Heavenly
Stem AndEarthly Branch Date - Compatibility alias mirroring the TypeScript
lunar-literesult name.