JSCalendar.TimeZone (JSCalendar v0.1.0)

Copy Markdown View Source

A time zone defined in the file rather than named from a database (RFC 8984 ยง4.7.2).

Most objects name their zone โ€” "timeZone": "Australia/Sydney" โ€” and leave the offsets to the IANA database. A custom zone exists for the cases where that is not enough: a sender whose database is newer than the recipient's, or a zone that is not in any database at all.

standard and daylight are lists of JSCalendar.TimeZoneRule.t/0, and valid_until is the sender's honesty about how far ahead the rules can be trusted.

A custom zone's tz_id must start with /, which is what keeps it from being mistaken for an IANA name.

Summary

Functions

Read this object from a decoded JSON map.

The @type value RFC 8984 gives this object.

Write this object back to a JSON-ready map.

Types

t()

@type t() :: %JSCalendar.TimeZone{
  aliases: MapSet.t() | nil,
  daylight: [JSCalendar.TimeZoneRule.t()] | nil,
  extra: map(),
  standard: [JSCalendar.TimeZoneRule.t()] | nil,
  tz_id: String.t() | nil,
  updated: DateTime.t() | nil,
  url: String.t() | nil,
  valid_until: DateTime.t() | nil
}

Functions

from_map(map)

@spec from_map(map()) :: {:ok, struct()} | {:error, term()}

Read this object from a decoded JSON map.

Arguments

Returns

  • {:ok, object}; or

  • {:error, reason} when a property does not match its declared type.

jscalendar_type()

@spec jscalendar_type() :: String.t()

The @type value RFC 8984 gives this object.

Returns

  • the type name as a string.

to_map(object)

@spec to_map(struct()) :: map()

Write this object back to a JSON-ready map.

Arguments

  • object is a t/0.

Returns