walkzzz/chrono_tz-mbt/tz does not have a README file

    TimeZone

    pub(open) trait TimeZone {
    fn offset_from_utc_date_time(Self, NaiveDateTime) -> TzOffset
    fn offset_from_local_date_time(Self, NaiveDateTime) -> LocalResult[TzOffset]
    }

    时区等价接口(最小子集)。 S5 中 Tz 实现此 trait:pub extend Tz with TimeZone::{offset_from_utc_date_time, offset_from_local_date_time}。

    TzError

    pub(all) suberror TzError {
    InvalidTzName(String)
    InvalidDate(Int64, Int64, Int64)
    InvalidTime(Int64, Int64, Int64)
    InvalidDayOfYear(Int64, Int64, Int)
    InvalidTimestamp(Int64)
    InvalidFormatString(String)
    ParseError(String, Int)
    Rfc3339ParseError(String, Int)
    TzOffsetOutOfRange(Int)
    } derive(
    Debug
    )

    时区操作错误类型(suberror 自动提升 Error)。 分层策略(ADR-008):查无 → T?;非法输入 → raise TzError;不变量破坏 → abort。

    TzError::to_repr

    Cron

    pub struct Cron {
    minutes : Array[Bool]
    hours : Array[Bool]
    doms : Array[Bool]
    months : Array[Bool]
    dows : Array[Bool]
    dom_restricted : Bool
    dow_restricted : Bool
    } derive(
    Debug
    )

    Cron::matches

    fn Cron::matches(self : Cron, dt : DateTime) -> Bool

    检查 DateTime 是否匹配 cron 表达式。 标准 cron 语义:dom 和 dow 都指定时取 OR,否则取 AND。

    Cron::next

    fn Cron::next(self : Cron, dt : DateTime) -> DateTime?

    从 dt 之后找下一次匹配时间(逐分钟搜索,最多 366 天)。 返回 DateTime?(未找到返回 None)。

    Cron::parse

    fn Cron::parse(expr : String) -> Cron?

    解析 cron 表达式 "30 9 * * mon-fri" -> Cron? 5 字段:minute(0-59) hour(0-23) day-of-month(1-31) month(1-12) day-of-week(0-6) 支持:* n n-m n-m/s */s a,b,c 及名称(sun-sat, jan-dec)

    Cron::to_repr

    Date

    pub struct Date {
    year : Int64
    month : Int64
    day : Int64
    } derive(Compare, Eq,
    Debug
    )

    仅有年月日的日期,不携带时区信息。

    Date::and_hms

    fn Date::and_hms(self : Date, h : Int64, m : Int64, s : Int64) -> NaiveDateTime

    转为 NaiveDateTime(时分秒为零)。

    Date::and_hms_opt

    fn Date::and_hms_opt(self : Date, tz : Tz, h : Int64, m : Int64, s : Int64) -> LocalResult[DateTime]

    由 Date + 时分秒 + 时区构造,返回 LocalResult[DateTime](含 DST 歧义/缺口)。

    Date::and_hms_tz

    fn Date::and_hms_tz(self : Date, tz : Tz, h : Int64, m : Int64, s : Int64) -> DateTime

    由 Date + 时分秒 + 时区构造,DST 缺口/歧义时 abort。

    Date::compare

    fn Date::compare(Date, Date) -> Int

    Date::day

    fn Date::day(self : Date) -> Int64

    日分量。

    Date::equal

    fn Date::equal(Date, Date) -> Bool

    Date::from_ordinal

    fn Date::from_ordinal(year : Int64, ordinal : Int64) -> Date

    由年 + 年内序日构造 Date。

    Date::make

    fn Date::make(year : Int64, month : Int64, day : Int64) -> Date

    构造 Date,非法日期用 fail! 抛错。

    Date::month

    fn Date::month(self : Date) -> Int64

    月分量。

    Date::not_equal

    fn Date::not_equal(x : Date, y : Date) -> Bool

    Date::op_ge

    fn Date::op_ge(x : Date, y : Date) -> Bool

    Date::op_gt

    fn Date::op_gt(x : Date, y : Date) -> Bool

    Date::op_le

    fn Date::op_le(x : Date, y : Date) -> Bool

    Date::op_lt

    fn Date::op_lt(x : Date, y : Date) -> Bool

    Date::ordinal

    fn Date::ordinal(self : Date) -> Int64

    年内序日(1..366)。

    Date::to_repr

    Date::weekday

    fn Date::weekday(self : Date) -> Int64

    星期(0=周日..6=周六)。

    Date::year

    fn Date::year(self : Date) -> Int64

    年分量。

    DateTime

    pub struct DateTime {
    naive_utc : Int64
    off : TzOffset
    } derive(Eq,
    Debug
    )

    UTC 瞬时 + 时区偏移(TzOffset),表示一个时区感知的绝对时刻。

    DateTime::abbreviation

    fn DateTime::abbreviation(self : DateTime) -> String

    返回偏移缩写。

    DateTime::equal

    fn DateTime::equal(DateTime, DateTime) -> Bool

    DateTime::make

    fn DateTime::make(naive_utc : Int64, offset : TzOffset) -> DateTime

    由 UTC 时间戳和偏移构造。

    DateTime::naive_local

    fn DateTime::naive_local(self : DateTime) -> NaiveDateTime

    返回本地墙钟时刻(UTC + offset)。

    DateTime::not_equal

    fn DateTime::not_equal(x : DateTime, y : DateTime) -> Bool

    DateTime::offset

    fn DateTime::offset(self : DateTime) -> TzOffset

    返回偏移。

    DateTime::offset_sec

    fn DateTime::offset_sec(self : DateTime) -> Int

    返回偏移秒数。

    DateTime::parse_http_date

    fn DateTime::parse_http_date(s : String) -> DateTime?

    解析 HTTP date "Wed, 15 Nov 1994 12:45:26 GMT"(RFC 7231)。 返回 DateTime?(解析失败返回 None)。

    DateTime::parse_rfc2822

    fn DateTime::parse_rfc2822(s : String) -> DateTime?

    解析 RFC2822 日期时间,如 "Tue, 1 Jul 2003 10:52:37 +0200"。 也接受无 weekday 形式 "1 Jul 2003 10:52:37 +0200"。 返回 DateTime?(解析失败返回 None)。

    DateTime::parse_rfc3339

    fn DateTime::parse_rfc3339(s : String) -> DateTime?

    RFC3339 解析:YYYY-MM-DDTHH:MM:SS±HH:MM 或 YYYY-MM-DDTHH:MM:SSZ。 返回 DateTime?(解析失败返回 None,不抛错,ADR-008 查无→T?)。

    DateTime::timestamp

    fn DateTime::timestamp(self : DateTime) -> Int64

    返回 UTC 时间戳。

    DateTime::to_http_date

    fn DateTime::to_http_date(self : DateTime) -> String

    格式化为 HTTP date "Wed, 01 Jan 2026 00:00:00 GMT"(RFC 7231 IMF-fixdate)。

    DateTime::to_json

    fn DateTime::to_json(self : DateTime) -> String

    序列化为 JSON 对象字符串。

    格式:{"rfc3339":"2025-07-15T12:00:00+08:00","timestamp":1752667200,"timezone":"Asia/Shanghai","offset":28800}

    DateTime::to_json_compact

    fn DateTime::to_json_compact(self : DateTime) -> String

    序列化为简洁 JSON(仅 rfc3339 + timezone)。

    格式:{"rfc3339":"2025-07-15T12:00:00+08:00","timezone":"Asia/Shanghai"}

    DateTime::to_repr

    DateTime::to_rfc2822

    fn DateTime::to_rfc2822(self : DateTime) -> String

    格式化为 RFC2822 "Wed, 1 Jan 2026 00:00:00 +0000"。

    DateTime::to_rfc3339

    fn DateTime::to_rfc3339(self : DateTime) -> String

    格式化为 RFC3339 "YYYY-MM-DDTHH:MM:SS±HH:MM"。

    DateTime::to_string

    fn DateTime::to_string(self : DateTime) -> String

    格式化为 "YYYY-MM-DD HH:MM:SS ABBR"。

    DateTime::tz_id

    fn DateTime::tz_id(self : DateTime) -> String

    返回 IANA 时区 ID。

    DateTime::with_timezone

    fn DateTime::with_timezone(self : DateTime, tz : Tz) -> DateTime

    重新绑定到新时区(UTC 瞬时不变,偏移重算)。

    Duration

    pub struct Duration {
    secs : Int64
    } derive(Compare, Eq,
    Debug
    )

    秒级时长,用于 NaiveDateTime 的加减运算。

    Duration::compare

    fn Duration::compare(Duration, Duration) -> Int

    Duration::equal

    fn Duration::equal(Duration, Duration) -> Bool

    Duration::hours

    fn Duration::hours(h : Int64) -> Duration

    构造 h 小时的时长。

    Duration::make

    fn Duration::make(secs : Int64) -> Duration

    由秒数直接构造。

    Duration::minutes

    fn Duration::minutes(m : Int64) -> Duration

    构造 m 分钟的时长。

    Duration::not_equal

    fn Duration::not_equal(x : Duration, y : Duration) -> Bool

    Duration::of_seconds

    fn Duration::of_seconds(s : Int64) -> Duration

    构造 s 秒的时长。

    Duration::op_add

    fn Duration::op_add(self : Duration, rhs : Duration) -> Duration

    时长加法。

    Duration::op_ge

    fn Duration::op_ge(x : Duration, y : Duration) -> Bool

    Duration::op_gt

    fn Duration::op_gt(x : Duration, y : Duration) -> Bool

    Duration::op_le

    fn Duration::op_le(x : Duration, y : Duration) -> Bool

    Duration::op_lt

    fn Duration::op_lt(x : Duration, y : Duration) -> Bool

    Duration::op_sub

    fn Duration::op_sub(self : Duration, rhs : Duration) -> Duration

    时长减法。

    Duration::to_repr

    Duration::zero

    fn Duration::zero() -> Duration

    零时长。

    GapInfo

    pub struct GapInfo {
    begin : (NaiveDateTime, TzOffset)?
    end : DateTime?
    }

    DST 春进缺口信息,描述一个不存在的本地时刻前后的边界。

    GapInfo::detect

    fn GapInfo::detect(local_dt : NaiveDateTime, tz : Tz) -> GapInfo?

    探测本地墙钟 local 在时区 tz 下是否落在 DST 春进缺口。

    GapInfo::make

    fn GapInfo::make(begin : (NaiveDateTime, TzOffset)?, end : DateTime?) -> GapInfo

    由边界直接构造。

    LocalResult

    pub enum LocalResult[T] {
    Single(T)
    Ambiguous(T, T)
    None
    }

    本地墙钟→UTC 解析的三分支结果,表达 DST 歧义与缺口。

    LocalResult::earliest

    fn[T] LocalResult::earliest(self : LocalResult[T]) -> T

    取最早候选:Single 取其值,Ambiguous 取第一个,None 抛异常。

    LocalResult::is_ambiguous

    fn[T] LocalResult::is_ambiguous(self : LocalResult[T]) -> Bool

    判定是否为 Ambiguous(DST 秋退重叠)。

    LocalResult::is_none

    fn[T] LocalResult::is_none(self : LocalResult[T]) -> Bool

    判定是否为 None(DST 春进缺口)。

    LocalResult::is_single

    fn[T] LocalResult::is_single(self : LocalResult[T]) -> Bool

    判定是否为 Single。

    LocalResult::latest

    fn[T] LocalResult::latest(self : LocalResult[T]) -> T

    取最晚候选:Single 取其值,Ambiguous 取第二个,None 抛异常。

    LocalResult::single

    fn[T] LocalResult::single(self : LocalResult[T]) -> T?

    若为 Single 则返回 Some(v),否则 None。

    LocalResult::unwrap

    fn[T] LocalResult::unwrap(self : LocalResult[T]) -> T

    取唯一的 Single 值,Ambiguous 或 None 时抛异常。

    NaiveDateTime

    pub struct NaiveDateTime {
    year : Int64
    month : Int64
    day : Int64
    hour : Int64
    min : Int64
    sec : Int64
    } derive(Compare, Eq,
    Debug
    )

    无时区墙钟时刻(year/month/day/hour/min/sec),不携带任何 UTC 或偏移信息。

    NaiveDateTime::add_days

    fn NaiveDateTime::add_days(self : NaiveDateTime, days : Int64) -> NaiveDateTime

    加天数。

    NaiveDateTime::add_seconds

    fn NaiveDateTime::add_seconds(self : NaiveDateTime, secs : Int64) -> NaiveDateTime

    加秒数。

    NaiveDateTime::compare

    NaiveDateTime::day

    fn NaiveDateTime::day(self : NaiveDateTime) -> Int64

    日分量。

    NaiveDateTime::days_in_month

    fn NaiveDateTime::days_in_month(year : Int64, month : Int64) -> Int64

    返回某年某月的天数。

    NaiveDateTime::equal

    NaiveDateTime::from_timestamp

    fn NaiveDateTime::from_timestamp(unix_secs : Int64) -> NaiveDateTime

    由 Unix 时间戳构造 NaiveDateTime(UTC,Hinnant days→civil 算法)。

    NaiveDateTime::hour

    fn NaiveDateTime::hour(self : NaiveDateTime) -> Int64

    时分量。

    NaiveDateTime::is_leap_year

    fn NaiveDateTime::is_leap_year(year : Int64) -> Bool

    判断是否闰年。

    NaiveDateTime::make

    fn NaiveDateTime::make(year : Int64, month : Int64, day : Int64, hour : Int64, min : Int64, sec : Int64) -> NaiveDateTime

    构造 NaiveDateTime,非法日期/时间用 fail! 抛错(S4 改为 raise TzError)。

    NaiveDateTime::minute

    fn NaiveDateTime::minute(self : NaiveDateTime) -> Int64

    分分量。

    NaiveDateTime::month

    fn NaiveDateTime::month(self : NaiveDateTime) -> Int64

    月分量。

    NaiveDateTime::not_equal

    fn NaiveDateTime::not_equal(x : NaiveDateTime, y : NaiveDateTime) -> Bool

    NaiveDateTime::op_ge

    fn NaiveDateTime::op_ge(x : NaiveDateTime, y : NaiveDateTime) -> Bool

    NaiveDateTime::op_gt

    fn NaiveDateTime::op_gt(x : NaiveDateTime, y : NaiveDateTime) -> Bool

    NaiveDateTime::op_le

    fn NaiveDateTime::op_le(x : NaiveDateTime, y : NaiveDateTime) -> Bool

    NaiveDateTime::op_lt

    fn NaiveDateTime::op_lt(x : NaiveDateTime, y : NaiveDateTime) -> Bool

    NaiveDateTime::ordinal

    fn NaiveDateTime::ordinal(self : NaiveDateTime) -> Int64

    年内序日(1..366)。

    NaiveDateTime::second

    fn NaiveDateTime::second(self : NaiveDateTime) -> Int64

    秒分量。

    NaiveDateTime::sub_seconds

    fn NaiveDateTime::sub_seconds(self : NaiveDateTime, secs : Int64) -> NaiveDateTime

    减秒数。

    NaiveDateTime::timestamp

    fn NaiveDateTime::timestamp(self : NaiveDateTime) -> Int64

    转为 Unix 时间戳(Hinnant civil→days 算法,支持负时间戳)。

    NaiveDateTime::to_date_time_string

    fn NaiveDateTime::to_date_time_string(self : NaiveDateTime) -> String

    格式化为 "YYYY-MM-DD HH:MM:SS"。

    NaiveDateTime::to_json

    fn NaiveDateTime::to_json(self : NaiveDateTime) -> String

    序列化 NaiveDateTime 为 JSON(无时区信息)。

    格式:{"rfc3339":"2025-07-15T12:00:00","timestamp":1752667200}

    NaiveDateTime::to_rfc_string

    fn NaiveDateTime::to_rfc_string(self : NaiveDateTime) -> String

    格式化为 "YYYY-MM-DDTHH:MM:SS"。

    NaiveDateTime::weekday

    fn NaiveDateTime::weekday(self : NaiveDateTime) -> Int64

    星期(0=周日..6=周六)。

    NaiveDateTime::year

    fn NaiveDateTime::year(self : NaiveDateTime) -> Int64

    年分量。
    pub(all) enum Tz {
    Africa__Abidjan
    Africa__Accra
    Africa__Addis_Ababa
    Africa__Algiers
    Africa__Asmara
    Africa__Asmera
    Africa__Bamako
    Africa__Bangui
    Africa__Banjul
    Africa__Bissau
    Africa__Blantyre
    Africa__Brazzaville
    Africa__Bujumbura
    Africa__Cairo
    Africa__Casablanca
    Africa__Ceuta
    Africa__Conakry
    Africa__Dakar
    Africa__Dar_es_Salaam
    Africa__Djibouti
    Africa__Douala
    Africa__El_Aaiun
    Africa__Freetown
    Africa__Gaborone
    Africa__Harare
    Africa__Johannesburg
    Africa__Juba
    Africa__Kampala
    Africa__Khartoum
    Africa__Kigali
    Africa__Kinshasa
    Africa__Lagos
    Africa__Libreville
    Africa__Lome
    Africa__Luanda
    Africa__Lubumbashi
    Africa__Lusaka
    Africa__Malabo
    Africa__Maputo
    Africa__Maseru
    Africa__Mbabane
    Africa__Mogadishu
    Africa__Monrovia
    Africa__Nairobi
    Africa__Ndjamena
    Africa__Niamey
    Africa__Nouakchott
    Africa__Ouagadougou
    Africa__PortoNovo
    Africa__Sao_Tome
    Africa__Timbuktu
    Africa__Tripoli
    Africa__Tunis
    Africa__Windhoek
    America__Adak
    America__Anchorage
    America__Anguilla
    America__Antigua
    America__Araguaina
    America__Argentina__Buenos_Aires
    America__Argentina__Catamarca
    America__Argentina__ComodRivadavia
    America__Argentina__Cordoba
    America__Argentina__Jujuy
    America__Argentina__La_Rioja
    America__Argentina__Mendoza
    America__Argentina__Rio_Gallegos
    America__Argentina__Salta
    America__Argentina__San_Juan
    America__Argentina__San_Luis
    America__Argentina__Tucuman
    America__Argentina__Ushuaia
    America__Aruba
    America__Asuncion
    America__Atikokan
    America__Atka
    America__Bahia
    America__Bahia_Banderas
    America__Barbados
    America__Belem
    America__Belize
    America__BlancSablon
    America__Boa_Vista
    America__Bogota
    America__Boise
    America__Buenos_Aires
    America__Cambridge_Bay
    America__Campo_Grande
    America__Cancun
    America__Caracas
    America__Catamarca
    America__Cayenne
    America__Cayman
    America__Chicago
    America__Chihuahua
    America__Ciudad_Juarez
    America__Coral_Harbour
    America__Cordoba
    America__Costa_Rica
    America__Coyhaique
    America__Creston
    America__Cuiaba
    America__Curacao
    America__Danmarkshavn
    America__Dawson
    America__Dawson_Creek
    America__Denver
    America__Detroit
    America__Dominica
    America__Edmonton
    America__Eirunepe
    America__El_Salvador
    America__Ensenada
    America__Fort_Nelson
    America__Fort_Wayne
    America__Fortaleza
    America__Glace_Bay
    America__Godthab
    America__Goose_Bay
    America__Grand_Turk
    America__Grenada
    America__Guadeloupe
    America__Guatemala
    America__Guayaquil
    America__Guyana
    America__Halifax
    America__Havana
    America__Hermosillo
    America__Indiana__Indianapolis
    America__Indiana__Knox
    America__Indiana__Marengo
    America__Indiana__Petersburg
    America__Indiana__Tell_City
    America__Indiana__Vevay
    America__Indiana__Vincennes
    America__Indiana__Winamac
    America__Indianapolis
    America__Inuvik
    America__Iqaluit
    America__Jamaica
    America__Jujuy
    America__Juneau
    America__Kentucky__Louisville
    America__Kentucky__Monticello
    America__Knox_IN
    America__Kralendijk
    America__La_Paz
    America__Lima
    America__Los_Angeles
    America__Louisville
    America__Lower_Princes
    America__Maceio
    America__Managua
    America__Manaus
    America__Marigot
    America__Martinique
    America__Matamoros
    America__Mazatlan
    America__Mendoza
    America__Menominee
    America__Merida
    America__Metlakatla
    America__Mexico_City
    America__Miquelon
    America__Moncton
    America__Monterrey
    America__Montevideo
    America__Montreal
    America__Montserrat
    America__Nassau
    America__New_York
    America__Nipigon
    America__Nome
    America__Noronha
    America__North_Dakota__Beulah
    America__North_Dakota__Center
    America__North_Dakota__New_Salem
    America__Nuuk
    America__Ojinaga
    America__Panama
    America__Pangnirtung
    America__Paramaribo
    America__Phoenix
    America__PortauPrince
    America__Port_of_Spain
    America__Porto_Acre
    America__Porto_Velho
    America__Puerto_Rico
    America__Punta_Arenas
    America__Rainy_River
    America__Rankin_Inlet
    America__Recife
    America__Regina
    America__Resolute
    America__Rio_Branco
    America__Rosario
    America__Santa_Isabel
    America__Santarem
    America__Santiago
    America__Santo_Domingo
    America__Sao_Paulo
    America__Scoresbysund
    America__Shiprock
    America__Sitka
    America__St_Barthelemy
    America__St_Johns
    America__St_Kitts
    America__St_Lucia
    America__St_Thomas
    America__St_Vincent
    America__Swift_Current
    America__Tegucigalpa
    America__Thule
    America__Thunder_Bay
    America__Tijuana
    America__Toronto
    America__Tortola
    America__Vancouver
    America__Virgin
    America__Whitehorse
    America__Winnipeg
    America__Yakutat
    America__Yellowknife
    Antarctica__Casey
    Antarctica__Davis
    Antarctica__DumontDUrville
    Antarctica__Macquarie
    Antarctica__Mawson
    Antarctica__McMurdo
    Antarctica__Palmer
    Antarctica__Rothera
    Antarctica__South_Pole
    Antarctica__Syowa
    Antarctica__Troll
    Antarctica__Vostok
    Arctic__Longyearbyen
    Asia__Aden
    Asia__Almaty
    Asia__Amman
    Asia__Anadyr
    Asia__Aqtau
    Asia__Aqtobe
    Asia__Ashgabat
    Asia__Ashkhabad
    Asia__Atyrau
    Asia__Baghdad
    Asia__Bahrain
    Asia__Baku
    Asia__Bangkok
    Asia__Barnaul
    Asia__Beirut
    Asia__Bishkek
    Asia__Brunei
    Asia__Calcutta
    Asia__Chita
    Asia__Choibalsan
    Asia__Chongqing
    Asia__Chungking
    Asia__Colombo
    Asia__Dacca
    Asia__Damascus
    Asia__Dhaka
    Asia__Dili
    Asia__Dubai
    Asia__Dushanbe
    Asia__Famagusta
    Asia__Gaza
    Asia__Harbin
    Asia__Hebron
    Asia__Ho_Chi_Minh
    Asia__Hong_Kong
    Asia__Hovd
    Asia__Irkutsk
    Asia__Istanbul
    Asia__Jakarta
    Asia__Jayapura
    Asia__Jerusalem
    Asia__Kabul
    Asia__Kamchatka
    Asia__Karachi
    Asia__Kashgar
    Asia__Kathmandu
    Asia__Katmandu
    Asia__Khandyga
    Asia__Kolkata
    Asia__Krasnoyarsk
    Asia__Kuala_Lumpur
    Asia__Kuching
    Asia__Kuwait
    Asia__Macao
    Asia__Macau
    Asia__Magadan
    Asia__Makassar
    Asia__Manila
    Asia__Muscat
    Asia__Nicosia
    Asia__Novokuznetsk
    Asia__Novosibirsk
    Asia__Omsk
    Asia__Oral
    Asia__Phnom_Penh
    Asia__Pontianak
    Asia__Pyongyang
    Asia__Qatar
    Asia__Qostanay
    Asia__Qyzylorda
    Asia__Rangoon
    Asia__Riyadh
    Asia__Saigon
    Asia__Sakhalin
    Asia__Samarkand
    Asia__Seoul
    Asia__Shanghai
    Asia__Singapore
    Asia__Srednekolymsk
    Asia__Taipei
    Asia__Tashkent
    Asia__Tbilisi
    Asia__Tehran
    Asia__Tel_Aviv
    Asia__Thimbu
    Asia__Thimphu
    Asia__Tokyo
    Asia__Tomsk
    Asia__Ujung_Pandang
    Asia__Ulaanbaatar
    Asia__Ulan_Bator
    Asia__Urumqi
    Asia__UstNera
    Asia__Vientiane
    Asia__Vladivostok
    Asia__Yakutsk
    Asia__Yangon
    Asia__Yekaterinburg
    Asia__Yerevan
    Atlantic__Azores
    Atlantic__Bermuda
    Atlantic__Canary
    Atlantic__Cape_Verde
    Atlantic__Faeroe
    Atlantic__Faroe
    Atlantic__Jan_Mayen
    Atlantic__Madeira
    Atlantic__Reykjavik
    Atlantic__South_Georgia
    Atlantic__St_Helena
    Atlantic__Stanley
    Australia__ACT
    Australia__Adelaide
    Australia__Brisbane
    Australia__Broken_Hill
    Australia__Canberra
    Australia__Currie
    Australia__Darwin
    Australia__Eucla
    Australia__Hobart
    Australia__LHI
    Australia__Lindeman
    Australia__Lord_Howe
    Australia__Melbourne
    Australia__NSW
    Australia__North
    Australia__Perth
    Australia__Queensland
    Australia__South
    Australia__Sydney
    Australia__Tasmania
    Australia__Victoria
    Australia__West
    Australia__Yancowinna
    Brazil__Acre
    Brazil__DeNoronha
    Brazil__East
    Brazil__West
    CET
    CST6CDT
    Canada__Atlantic
    Canada__Central
    Canada__Eastern
    Canada__Mountain
    Canada__Newfoundland
    Canada__Pacific
    Canada__Saskatchewan
    Canada__Yukon
    Chile__Continental
    Chile__EasterIsland
    Cuba
    EET
    EST
    EST5EDT
    Egypt
    Eire
    Etc__GMT
    Etc__GMTPlus0
    Etc__GMTPlus1
    Etc__GMTPlus10
    Etc__GMTPlus11
    Etc__GMTPlus12
    Etc__GMTPlus2
    Etc__GMTPlus3
    Etc__GMTPlus4
    Etc__GMTPlus5
    Etc__GMTPlus6
    Etc__GMTPlus7
    Etc__GMTPlus8
    Etc__GMTPlus9
    Etc__GMTMinus0
    Etc__GMTMinus1
    Etc__GMTMinus10
    Etc__GMTMinus11
    Etc__GMTMinus12
    Etc__GMTMinus13
    Etc__GMTMinus14
    Etc__GMTMinus2
    Etc__GMTMinus3
    Etc__GMTMinus4
    Etc__GMTMinus5
    Etc__GMTMinus6
    Etc__GMTMinus7
    Etc__GMTMinus8
    Etc__GMTMinus9
    Etc__GMT0
    Etc__Greenwich
    Etc__UCT
    Etc__UTC
    Etc__Universal
    Etc__Zulu
    Europe__Amsterdam
    Europe__Andorra
    Europe__Astrakhan
    Europe__Athens
    Europe__Belfast
    Europe__Belgrade
    Europe__Berlin
    Europe__Bratislava
    Europe__Brussels
    Europe__Bucharest
    Europe__Budapest
    Europe__Busingen
    Europe__Chisinau
    Europe__Copenhagen
    Europe__Dublin
    Europe__Gibraltar
    Europe__Guernsey
    Europe__Helsinki
    Europe__Isle_of_Man
    Europe__Istanbul
    Europe__Jersey
    Europe__Kaliningrad
    Europe__Kiev
    Europe__Kirov
    Europe__Kyiv
    Europe__Lisbon
    Europe__Ljubljana
    Europe__London
    Europe__Luxembourg
    Europe__Madrid
    Europe__Malta
    Europe__Mariehamn
    Europe__Minsk
    Europe__Monaco
    Europe__Moscow
    Europe__Nicosia
    Europe__Oslo
    Europe__Paris
    Europe__Podgorica
    Europe__Prague
    Europe__Riga
    Europe__Rome
    Europe__Samara
    Europe__San_Marino
    Europe__Sarajevo
    Europe__Saratov
    Europe__Simferopol
    Europe__Skopje
    Europe__Sofia
    Europe__Stockholm
    Europe__Tallinn
    Europe__Tirane
    Europe__Tiraspol
    Europe__Ulyanovsk
    Europe__Uzhgorod
    Europe__Vaduz
    Europe__Vatican
    Europe__Vienna
    Europe__Vilnius
    Europe__Volgograd
    Europe__Warsaw
    Europe__Zagreb
    Europe__Zaporozhye
    Europe__Zurich
    GB
    GBEire
    GMT
    GMTPlus0
    GMTMinus0
    GMT0
    Greenwich
    HST
    Hongkong
    Iceland
    Indian__Antananarivo
    Indian__Chagos
    Indian__Christmas
    Indian__Cocos
    Indian__Comoro
    Indian__Kerguelen
    Indian__Mahe
    Indian__Maldives
    Indian__Mauritius
    Indian__Mayotte
    Indian__Reunion
    Iran
    Israel
    Jamaica
    Japan
    Kwajalein
    Libya
    MET
    MST
    MST7MDT
    Mexico__BajaNorte
    Mexico__BajaSur
    Mexico__General
    NZ
    NZCHAT
    Navajo
    PRC
    PST8PDT
    Pacific__Apia
    Pacific__Auckland
    Pacific__Bougainville
    Pacific__Chatham
    Pacific__Chuuk
    Pacific__Easter
    Pacific__Efate
    Pacific__Enderbury
    Pacific__Fakaofo
    Pacific__Fiji
    Pacific__Funafuti
    Pacific__Galapagos
    Pacific__Gambier
    Pacific__Guadalcanal
    Pacific__Guam
    Pacific__Honolulu
    Pacific__Johnston
    Pacific__Kanton
    Pacific__Kiritimati
    Pacific__Kosrae
    Pacific__Kwajalein
    Pacific__Majuro
    Pacific__Marquesas
    Pacific__Midway
    Pacific__Nauru
    Pacific__Niue
    Pacific__Norfolk
    Pacific__Noumea
    Pacific__Pago_Pago
    Pacific__Palau
    Pacific__Pitcairn
    Pacific__Pohnpei
    Pacific__Ponape
    Pacific__Port_Moresby
    Pacific__Rarotonga
    Pacific__Saipan
    Pacific__Samoa
    Pacific__Tahiti
    Pacific__Tarawa
    Pacific__Tongatapu
    Pacific__Truk
    Pacific__Wake
    Pacific__Wallis
    Pacific__Yap
    Poland
    Portugal
    ROC
    ROK
    Singapore
    Turkey
    UCT
    US__Alaska
    US__Aleutian
    US__Arizona
    US__Central
    US__EastIndiana
    US__Eastern
    US__Hawaii
    US__IndianaStarke
    US__Michigan
    US__Mountain
    US__Pacific
    US__Samoa
    UTC
    Universal
    WSU
    WET
    Zulu
    } derive(Compare, Eq,
    Debug
    )

    IANA 时区枚举,597 个 variant,每个对应一个 IANA 时区 ID。

    Tz::all

    fn Tz::all() -> Array[Tz]

    返回全部 597 个时区,按 IANA ID 升序排列。

    Tz::all_names

    fn Tz::all_names() -> Array[String]

    返回全部 597 个时区的 IANA ID,按升序排列。

    Tz::compare

    fn Tz::compare(Tz, Tz) -> Int

    Tz::equal

    fn Tz::equal(Tz, Tz) -> Bool

    Tz::from_local_date_time

    fn Tz::from_local_date_time(self : Tz, dt : NaiveDateTime) -> LocalResult[DateTime]

    把本地墙钟 dt 解析为 UTC 瞬时,返回 LocalResult[DateTime]。

    Tz::from_str

    fn Tz::from_str(s : String) -> Tz?

    解析 IANA 时区 ID 为 Tz variant(二分查找,未找到返回 None)。

    在按 IANA ID 升序排列的 name_to_tz 表上二分查找,O(log n)。

    Tz::local_tz

    fn Tz::local_tz() -> Tz?

    返回宿主时区(读 $TZ 环境变量)。 native/js/wasm 均读 $TZ;未设置、空串或解析失败返回 None。

    Tz::name

    fn Tz::name(self : Tz) -> String

    返回本时区的 IANA ID(如 "Europe/Paris")。 查 name_to_tz 表,避免 597-arm match 触发 WASM local count 限制。

    Tz::not_equal

    fn Tz::not_equal(x : Tz, y : Tz) -> Bool

    Tz::offset_from_local_date_time

    fn Tz::offset_from_local_date_time(self : Tz, dt : NaiveDateTime) -> LocalResult[TzOffset]

    给定本地墙钟,返回 LocalResult[TzOffset](含 DST 歧义/缺口处理)。

    Tz::offset_from_local_extrapolated

    fn Tz::offset_from_local_extrapolated(self : Tz, dt : NaiveDateTime) -> LocalResult[TzOffset]

    给定本地墙钟,返回 LocalResult[TzOffset],超出内置 transition 时用 POSIX TZ footer 外推。

    Tz::offset_from_utc_date_time

    fn Tz::offset_from_utc_date_time(self : Tz, dt : NaiveDateTime) -> TzOffset

    给定 UTC 瞬时,返回其在本时区的偏移(无歧义)。 用 binary_search + utc_span(n).cmp(ts),Ok/Err 均取 idx(UTC 区间无缺口)。

    Tz::offset_from_utc_extrapolated

    fn Tz::offset_from_utc_extrapolated(self : Tz, dt : NaiveDateTime) -> TzOffset

    给定 UTC 瞬时,返回其在本时区的偏移,超出内置 transition 时用 POSIX TZ footer 外推。 主路径:内置 FixedTimespanSet binary_search(覆盖历史 + 当前)。 Fallback:当 ts 超出最后 transition 且有 POSIX TZ 规则时,用 apply_posix_rule 外推未来 DST。

    Tz::op_ge

    fn Tz::op_ge(x : Tz, y : Tz) -> Bool

    Tz::op_gt

    fn Tz::op_gt(x : Tz, y : Tz) -> Bool

    Tz::op_le

    fn Tz::op_le(x : Tz, y : Tz) -> Bool

    Tz::op_lt

    fn Tz::op_lt(x : Tz, y : Tz) -> Bool

    Tz::timespans

    返回本时区的预计算过渡表(Tz variant → FixedTimespanSet 映射)。 拆分为 6 个子函数以避免 WASM local count 限制(597 match arm 单函数超限)。

    Tz::to_repr

    TzOffset

    某 UTC 瞬时在某时区下的偏移,由时区与命中的 FixedTimespan 段组成。

    TzOffset::abbreviation

    fn TzOffset::abbreviation(self : TzOffset) -> String

    返回偏移缩写(如 CET、CEST)。

    TzOffset::equal

    fn TzOffset::equal(TzOffset, TzOffset) -> Bool

    TzOffset::make

    由时区与命中的 FixedTimespan 构造。

    TzOffset::not_equal

    fn TzOffset::not_equal(x : TzOffset, y : TzOffset) -> Bool

    TzOffset::offset

    fn TzOffset::offset(self : TzOffset) -> String

    返回偏移展示名(与 abbreviation 同源)。

    TzOffset::offset_sec

    fn TzOffset::offset_sec(self : TzOffset) -> Int

    返回偏移秒数(如 CET = +3600)。

    TzOffset::to_repr

    TzOffset::to_string

    fn TzOffset::to_string(self : TzOffset) -> String

    返回偏移缩写字符串(同 abbreviation)。

    TzOffset::tz_id

    fn TzOffset::tz_id(self : TzOffset) -> String

    返回 IANA 时区 ID(如 Europe/Paris)。

    bench_from_str_summary

    fn bench_from_str_summary() ->
    Summary

    运行 from_str 基准测试,返回摘要。
    fn binary_search(start : Int, end : Int, f : (Int) ->
    Ordering
    ) -> Result[Int, Int]

    二分查找,镜像 Rust slice::binary_search_by 语义。 Ok(idx) = 命中元素索引;Err(idx) = 插入点索引。

    quickcheck_civil_roundtrip

    fn quickcheck_civil_roundtrip() -> Unit raise

    运行 Hinnant civil↔days 往返属性检查,返回是否通过。

    strftime

    fn strftime(format : String, dt : DateTime) -> String

    strftime:按格式串格式化 DateTime。 支持:%Y %m %d %H %M %S %Z %z %A %a %B %b %j %% 及字面字符。

    strptime

    fn strptime(format : String, input : String, tz : Tz) -> DateTime?

    strptime:按格式串解析输入为 DateTime。 支持:%Y(4位年) %m(2位月) %d(2位日) %H(2位时) %M(2位分) %S(2位秒) %y(2位年,00-68→2000s,69-99→1900s) %j(3位年中天数) %B(月份全名) %b(月份缩写) %A(星期全名) %a(星期缩写) %Z(时区缩写,仅消费) %z(偏移±HHMM/±HH:MM,仅消费) %% 及字面字符。 解析失败返回 None(ADR-008 查无→T?)。