Expand description
§Chrono-TZ
Chrono-TZ is a library that provides implementors of the
TimeZone trait for chrono. The
impls are generated by a build script using the IANA database
and zoneinfo_parse.
§Examples
Create a time in one timezone and convert it to UTC
use chrono::{TimeZone, Utc};
use chrono_tz::US::Pacific;
let pacific_time = Pacific.ymd(1990, 5, 6).and_hms(12, 30, 45);
let utc_time = pacific_time.with_timezone(&Utc);
assert_eq!(utc_time, Utc.ymd(1990, 5, 6).and_hms(19, 30, 45));Create a naive datetime and convert it to a timezone-aware datetime
use chrono::{TimeZone, NaiveDate};
use chrono_tz::Africa::Johannesburg;
let naive_dt = NaiveDate::from_ymd(2038, 1, 19).and_hms(3, 14, 08);
let tz_aware = Johannesburg.from_local_datetime(&naive_dt).unwrap();
assert_eq!(tz_aware.to_string(), "2038-01-19 03:14:08 SAST");London and New York change their clocks on different days in March so only have a 4-hour difference on certain days.
use chrono::TimeZone;
use chrono_tz::Europe::London;
use chrono_tz::America::New_York;
let london_time = London.ymd(2016, 3, 18).and_hms(3, 0, 0);
let ny_time = london_time.with_timezone(&New_York);
assert_eq!(ny_time, New_York.ymd(2016, 3, 17).and_hms(23, 0, 0));Adding 24 hours across a daylight savings change causes a change in local time
use chrono::{TimeZone, Duration};
use chrono_tz::Europe::London;
let dt = London.ymd(2016, 10, 29).and_hms(12, 0, 0);
let later = dt + Duration::hours(24);
assert_eq!(later, London.ymd(2016, 10, 30).and_hms(11, 0, 0));And of course you can always convert a local time to a unix timestamp
use chrono::TimeZone;
use chrono_tz::Asia::Kolkata;
let dt = Kolkata.ymd(2000, 1, 1).and_hms(0, 0, 0);
let timestamp = dt.timestamp();
assert_eq!(timestamp, 946665000);Pretty-printing a string will use the correct abbreviation for the timezone
use chrono::TimeZone;
use chrono_tz::Europe::London;
let dt = London.ymd(2016, 5, 10).and_hms(12, 0, 0);
assert_eq!(dt.to_string(), "2016-05-10 12:00:00 BST");
assert_eq!(dt.to_rfc3339(), "2016-05-10T12:00:00+01:00");You can convert a timezone string to a timezone using the FromStr trait
use chrono::TimeZone;
use chrono_tz::Tz;
use chrono_tz::UTC;
let tz: Tz = "Antarctica/South_Pole".parse().unwrap();
let dt = tz.ymd(2016, 10, 22).and_hms(12, 0, 0);
let utc = dt.with_timezone(&UTC);
assert_eq!(utc.to_string(), "2016-10-21 23:00:00 UTC");If you need to iterate over all variants you can use the TZ_VARIANTS array
use chrono_tz::{TZ_VARIANTS, Tz};
assert!(TZ_VARIANTS.iter().any(|v| *v == Tz::UTC));Re-exports§
pub use IANA_TZDB_VERSION;
Modules§
- Africa
case-insensitiveorfilter-by-regex - America
case-insensitiveorfilter-by-regex - Antarctica
case-insensitiveorfilter-by-regex - Arctic
case-insensitiveorfilter-by-regex - Asia
case-insensitiveorfilter-by-regex - Atlantic
case-insensitiveorfilter-by-regex - Australia
case-insensitiveorfilter-by-regex - Brazil
case-insensitiveorfilter-by-regex - Canada
case-insensitiveorfilter-by-regex - Chile
case-insensitiveorfilter-by-regex - Etc
case-insensitiveorfilter-by-regex - Europe
case-insensitiveorfilter-by-regex - Indian
case-insensitiveorfilter-by-regex - Mexico
case-insensitiveorfilter-by-regex - Pacific
case-insensitiveorfilter-by-regex - US
case-insensitiveorfilter-by-regex
Structs§
- GapInfo
- Represents the information of a gap.
- Parse
Error case-insensitiveorfilter-by-regex - TzOffset
Enums§
- Tz
case-insensitiveorfilter-by-regex - TimeZones built at compile time from the tz database
Constants§
- CET
case-insensitiveorfilter-by-regex - CST6CDT
case-insensitiveorfilter-by-regex - Cuba
case-insensitiveorfilter-by-regex - EET
case-insensitiveorfilter-by-regex - EST
case-insensitiveorfilter-by-regex - EST5EDT
case-insensitiveorfilter-by-regex - Egypt
case-insensitiveorfilter-by-regex - Eire
case-insensitiveorfilter-by-regex - GB
case-insensitiveorfilter-by-regex - GBEire
case-insensitiveorfilter-by-regex - GMT
case-insensitiveorfilter-by-regex - GMT0
case-insensitiveorfilter-by-regex - GMTMinus0
case-insensitiveorfilter-by-regex - GMTPlus0
case-insensitiveorfilter-by-regex - Greenwich
case-insensitiveorfilter-by-regex - HST
case-insensitiveorfilter-by-regex - Hongkong
case-insensitiveorfilter-by-regex - IANA_
TZDB_ VERSION case-insensitiveorfilter-by-regex - Iceland
case-insensitiveorfilter-by-regex - Iran
case-insensitiveorfilter-by-regex - Israel
case-insensitiveorfilter-by-regex - Jamaica
case-insensitiveorfilter-by-regex - Japan
case-insensitiveorfilter-by-regex - Kwajalein
case-insensitiveorfilter-by-regex - Libya
case-insensitiveorfilter-by-regex - MET
case-insensitiveorfilter-by-regex - MST
case-insensitiveorfilter-by-regex - MST7MDT
case-insensitiveorfilter-by-regex - NZ
case-insensitiveorfilter-by-regex - NZCHAT
case-insensitiveorfilter-by-regex - Navajo
case-insensitiveorfilter-by-regex - PRC
case-insensitiveorfilter-by-regex - PST8PDT
case-insensitiveorfilter-by-regex - Poland
case-insensitiveorfilter-by-regex - Portugal
case-insensitiveorfilter-by-regex - ROC
case-insensitiveorfilter-by-regex - ROK
case-insensitiveorfilter-by-regex - Singapore
case-insensitiveorfilter-by-regex - Turkey
case-insensitiveorfilter-by-regex - UCT
case-insensitiveorfilter-by-regex - UTC
case-insensitiveorfilter-by-regex - Universal
case-insensitiveorfilter-by-regex - WET
case-insensitiveorfilter-by-regex - WSU
case-insensitiveorfilter-by-regex - Zulu
case-insensitiveorfilter-by-regex
Statics§
- TZ_
VARIANTS case-insensitiveorfilter-by-regex - An array of every known variant
Traits§
- Offset
Components - Detailed timezone offset components that expose any special conditions currently in effect.
- Offset
Name - Timezone offset name information.