Crates.io | zoneinfo64 |
lib.rs | zoneinfo64 |
version | 0.2.0 |
created_at | 2025-08-28 22:31:44.227864+00 |
updated_at | 2025-09-10 15:41:40.771565+00 |
description | Working with ICU zoneinfo64.res timezone data bundles |
homepage | https://icu4x.unicode.org |
repository | https://github.com/unicode-org/icu4x |
max_upload_size | |
id | 1814745 |
size | 242,332 |
This crate contains utilities for working with ICU4C's zoneinfo64 format
// Needs to be u32-aligned
let resb = resb::include_bytes_as_u32!("./data/zoneinfo64.res");
// Then we parse the data
let zoneinfo = ZoneInfo64::try_from_u32s(resb)
.expect("Error processing resource bundle file");
let pacific = zoneinfo.get("America/Los_Angeles").unwrap();
// Calculate the timezone offset for 2024-01-01
let offset = pacific.for_timestamp(1704067200000);
let offset_seven = UtcOffset::from_seconds(-7 * 3600);
assert_eq!(offset.offset, offset_seven);
// Calculate possible offsets at 2025-11-02T01:00:00
// This is during a DST switchover and is ambiguous
let possible = pacific.for_date_time(2025, 11, 2, 1, 0, 0);
let offset_eight = UtcOffset::from_seconds(-8 * 3600);
assert_eq!(possible, PossibleOffset::Ambiguous {
before: Offset { offset: offset_seven, rule_applies: true },
after: Offset { offset: offset_eight, rule_applies: false },
transition: 1762074000,
});
For more information on development, authorship, contributing etc. please visit ICU4X home page
.