fmt-zoned-datetime 🚧¶
Warning
This function is experimental and can change at any time.
let fmt-zoned-datetime(
dt,
zone,
locale: "en",
fallback: "localized-gmt",
date-length: "long",
time-length: "long"
)
Formats a date and a time in a timezone. Dates are assumed to be ISO dates.
Arguments¶
dt¶
The date and time to format. This can be a datetime or a dictionary with year, month, day, hour, minute, and second.
Example
#let tz = (
offset: "-03",
iana: "America/Thule",
zone-variant: "dt",
)
- #fmt-zoned-datetime(datetime(
year: 2024, month: 8, day: 15,
hour: 13, minute: 24, second: 9
), tz)
- #fmt-zoned-datetime(( // (1)!
year: 2024, month: 8, day: 15,
hour: 13, minute: 24, second: 9
),
tz,
locale: "en-GB"
)
- #fmt-zoned-datetime((
year: 2024, month: 8, day: 15,
hour: 13, minute: 24, second: 9
),
tz,
locale: "en-GB",
time-length: "full"
)
- Datetime passed as a dictionary
zone¶
The timezone. A dictionary with offset, iana, bcp47, metazone-id, and zone-variant. The options correspond to the arguments for fmt-timezone. Only offset is mandatory - the other fields provide supplemental information for named time zones.
iana and bcp47 are mutually exclusive. To get the zone name, iana/bcp47 and zone-variant must be specified in addition to offset. Note that not every locale has names for the zones. If a zone doesn't have a name in some locale, fallback is used.
Example
#let dt = datetime(
year: 2024, month: 8, day: 15,
hour: 13, minute: 24, second: 9
)
- #fmt-zoned-datetime(dt, (
offset: "-07",
iana: "America/Phoenix",
zone-variant: "st",
))
- #fmt-zoned-datetime(dt, (
offset: "+02",
iana: "Atlantic/Jan_Mayen",
zone-variant: "dt",
), locale: "en-GB")
- #fmt-zoned-datetime(dt, (
offset: "+08",
iana: "Asia/Hong_Kong",
zone-variant: "st",
), locale: "en-HK")
- #fmt-zoned-datetime(dt, (
offset: "+09:30",
iana: "Australia/Adelaide",
zone-variant: "dt",
), locale: "en-AU")
- #fmt-zoned-datetime(dt, (
offset: "+01",
iana: "Europe/Belfast", // (1)!
), locale: "en-GB")
- #fmt-zoned-datetime(dt, (
offset: "Z",
))
- No
zone-variantspecified.
locale¶
The locale to use when formatting the zoned datetime. A Unicode Locale Identifier. As with dates, ca can be set to a bcp47 calendar name.
Example
#let dt = datetime(
year: 2024, month: 8, day: 15,
hour: 13, minute: 24, second: 9
)
#let tz = (
offset: "+03",
iana: "Asia/Nicosia",
zone-variant: "dt",
)
- #fmt-zoned-datetime(dt, tz)
- #fmt-zoned-datetime(
dt, tz,
locale: "en-GB"
)
- #fmt-zoned-datetime(
dt, tz,
locale: "el-CY"
)
- #fmt-zoned-datetime(
dt, tz,
locale: "en-GB-u-ca-persian"
)
- #fmt-zoned-datetime(
dt, tz,
locale: "en-GB-u-ca-islamic-hc-h12"
)
fallback¶
The timezone format fallback. Either "localized-gmt" or a dictionary for an ISO 8601 fallback. This has the same effect as fallback does for fmt-timezone.
Example
#let dt = datetime(
year: 2024, month: 8, day: 15,
hour: 13, minute: 24, second: 9
)
#let f(
offset,
iso: none,
minutes: true,
seconds: false,
locale: "en"
) = fmt-zoned-datetime(
dt,
(offset: offset), // timezone
fallback: if iso != none {(
iso8601: (
format: iso,
minutes: if minutes {
"required"
} else {
"optional"
},
seconds: if seconds {
"optional"
} else {
"never"
},
)
)} else {
"localized-gmt"
},
locale: locale,
)
- #f("-07")
- #f("-07", locale: "cs")
- #f("-07", locale: "da")
- #f("-07", iso: "basic")
- #f("-07", iso: "extended")
- #f("-07", iso: "utc-basic")
- #f("-07", iso: "utc-extended")
\
- #f("Z", iso: "basic")
- #f("Z", iso: "extended")
- #f("Z", iso: "utc-basic")
- #f("Z", iso: "utc-extended")
\
// 2h 15min 45s
#let sec = (2 * 60 * 60) + (15 * 60) + 45
- #f(sec, iso: "extended")
- #f(sec, iso: "extended", seconds: true)
- #f(sec, iso: "extended", minutes: false)
- #f(2 * 60 * 60, iso: "extended", minutes: false)
date-length¶
The length of the formatted date part ("full", "long" (default), "medium", "short", or none).
Example
#let dt = datetime(
year: 2024, month: 8, day: 15,
hour: 13, minute: 24, second: 9
)
#let tz = (
offset: "+08",
iana: "Asia/Makassar",
zone-variant: "st",
)
#let f(
date-length,
locale: "en"
) = fmt-zoned-datetime(
dt, tz,
date-length: date-length,
locale: locale
)
*Full*
- #f("full", locale: "en-ID")
- #f("full", locale: "th")
- #f("full", locale: "id")
*Long*
- #f("long", locale: "en-ID")
- #f("long", locale: "ha")
- #f("long", locale: "lb")
*Medium*
- #f("medium", locale: "en-ID")
- #f("medium", locale: "ky")
- #f("medium", locale: "or")
*Short*
- #f("short", locale: "en-ID")
- #f("short", locale: "pa")
- #f("short", locale: "sr")
*None*
- #f(none, locale: "en-ID")
- #f(none, locale: "bg")
- #f(none, locale: "fr")
time-length¶
The length of the formatted time part ("full", "long" (default), "medium", "short", or none).
Example
#let dt = datetime(
year: 2024, month: 8, day: 15,
hour: 13, minute: 24, second: 9
)
#let tz = (
offset: "+08",
iana: "Asia/Makassar",
zone-variant: "st",
)
#let f(
time-length,
locale: "en"
) = fmt-zoned-datetime(
dt, tz,
time-length: time-length,
locale: locale
)
*Full*
- #f("full", locale: "en-ID")
- #f("full", locale: "it")
- #f("full", locale: "lo")
*Long*
- #f("long", locale: "en-ID")
- #f("long", locale: "gu")
- #f("long", locale: "qu")
*Medium*
- #f("medium", locale: "en-ID")
- #f("medium", locale: "sk")
- #f("medium", locale: "tr")
*Short*
- #f("short", locale: "en-ID")
- #f("short", locale: "wo")
- #f("short", locale: "az")
*None*
- #f(none, locale: "en-ID")
- #f(none, locale: "eu")
- #f(none, locale: "lv")