Skip to main content

KoreanTraditional

Type Alias KoreanTraditional 

Source
pub type KoreanTraditional = EastAsianTraditional<Korea>;
Expand description

The Korean variant of the EastAsianTraditional calendar.

This type agrees with the official data published by the Korea Astronomy and Space Science Institute for the years 1900-2050.

For years since 1912, this uses adapted GB/T 33661-2017 rules, using Korea time instead of Beijing Time. As accurate computation is computationally expensive, years until 2100 are precomputed, and after that this type regresses to a simplified calculation. If accuracy beyond 2100 is required, clients can implement their own Rules type containing more precomputed data. We note that the calendar is inherently uncertain for some future dates.

Before 1912 different rules were used (those of Qing-dynasty China). This type produces correct data for the years 1900-1912, and falls back to a simplified calculation before 1900. If accuracy is required before 1900, clients can implement their own Rules type using data such as from the excellent compilation by Yuk Tung Liu.

The precise behavior of this calendar may change in the future if:

  • New ground truth is established by published government sources
  • We decide to tweak the simplified calculation
  • We decide to expand or reduce the range where we are correctly handling past dates.
use icu::calendar::cal::{ChineseTraditional, KoreanTraditional};
use icu::calendar::Date;

let iso_a = Date::try_new_iso(2012, 4, 23).unwrap();
let korean_a = iso_a.to_calendar(KoreanTraditional::new());
let chinese_a = iso_a.to_calendar(ChineseTraditional::new());

assert_eq!(korean_a.month().standard_code.0, "M03L");
assert_eq!(chinese_a.month().standard_code.0, "M04");

let iso_b = Date::try_new_iso(2012, 5, 23).unwrap();
let korean_b = iso_b.to_calendar(KoreanTraditional::new());
let chinese_b = iso_b.to_calendar(ChineseTraditional::new());

assert_eq!(korean_b.month().standard_code.0, "M04");
assert_eq!(chinese_b.month().standard_code.0, "M04L");

Aliased Type§

pub struct KoreanTraditional(pub Korea);

Tuple Fields§

§0: Korea

Implementations§

Source§

impl KoreanTraditional

Source

pub const fn new() -> Self

Creates a new KoreanTraditional calendar.

Source

pub fn try_new_unstable<D: ?Sized>(_provider: &D) -> Result<Self, DataError>

👎Deprecated since 2.1.0:

use `Self::new()

Use Self::new. A version of Self::new that uses custom data provided by a DataProvider.

📚 Help choosing a constructor

⚠️ The bounds on provider may change over time, including in SemVer minor releases.
Source

pub fn new_always_calculating() -> Self

👎Deprecated since 2.1.0:

use `Self::new()

Use Self::new.

Trait Implementations§

Source§

impl IntoAnyCalendar for KoreanTraditional

Source§

fn to_any(self) -> AnyCalendar

Convert this calendar into an AnyCalendar, moving it Read more
Source§

fn kind(&self) -> AnyCalendarKind

The AnyCalendarKind enum variant associated with this calendar
Source§

fn from_any(any: AnyCalendar) -> Result<Self, AnyCalendar>

Move an AnyCalendar into a Self, or returning it as an error if the types do not match. Read more
Source§

fn from_any_ref(any: &AnyCalendar) -> Option<&Self>

Convert an AnyCalendar reference into a Self reference. Read more
Source§

fn date_to_any(&self, d: &Self::DateInner) -> AnyDateInner

Convert a date for this calendar into an AnyDateInner Read more