zone rules into your binary. This does mean that your program will need to be re-compiled if the time zone rules change (in contrast to Jiff's default behavior of reading `/usr/share/zoneinfo` at runtime on Unix), but sometimes there isn't a practical alternative. With the `static` crate feature enabled, the [`jiff::tz::get`](crate::tz::get) macro becomes available in this module. This example shows how use it to build a `TimeZone` at compile time. Here, we find the next DST transition from a particular timestamp in `Europe/Zurich`, and then print that in local time for Zurich: ``` use jiff::{tz::{self, TimeZone}, Timestamp}; static TZ: TimeZone = tz::get!("Europe/Zurich"); let ts: Timestamp = "2025-02-25T00:00Z".parse()?; let Some(next_transition) = TZ.following(ts).next() else { return Err("no time zone transitions".into()); }; let zdt = next_transition.timestamp().to_zoned(TZ.clone()); assert_eq!(zdt.to_string(), "2025-03-30T03:00:00+02:00[Europe/Zurich]"); # Ok::<(), Box>(()) ``` The above example does not require dynamic memory allocation or access to file system APIs. It also _only_ embeds the `Europe/Zurich` time zone into your compiled binary. [IANA Time Zone Database]: https://en.wikipedia.org/wiki/Tz_database [`GetDynamicTimeZoneInformation`]: https://learn.microsoft.com/en-us/windows/win32/api/timezoneapi/nf-timezoneapi-getdynamictimezoneinformation