timex v3.2.0 Timex.TimezoneInfo View Source
All relevant timezone information for a given period, i.e. Europe/Moscow on March 3rd, 2013
Notes:
full_name
is the name of the zone, but does not indicate anything about the current period (i.e. CST vs CDT)abbreviation
is the abbreviated name for the zone in the current period, i.e. “America/Chicago” on 3/30/15 is “CDT”offset_std
is the offset in minutes from standard time for this periodoffset_utc
is the offset in minutes from UTC for this period Spec:day_of_week
: :sunday, :monday, :tuesday, etcdatetime
: {{year, month, day}, {hour, minute, second}}from
: :min | {day_of_week, datetime}, when this zone startsuntil
: :max | {day_of_week, datetime}, when this zone ends
Link to this section Summary
Functions
Create a custom timezone if a built-in one does not meet your needs
Link to this section Types
datetime() :: {{non_neg_integer(), 1..12, 1..31}, {0..24, 0..59, 0..60}}
day_of_week() :: :sunday | :monday | :tuesday | :wednesday | :thursday | :friday | :saturday
from_constraint() :: :min | {day_of_week(), datetime()}
t() :: %Timex.TimezoneInfo{ abbreviation: String.t(), from: from_constraint(), full_name: String.t(), offset_std: offset(), offset_utc: offset(), until: until_constraint() }
until_constraint() :: :max | {day_of_week(), datetime()}
Link to this section Functions
create( String.t(), String.t(), offset(), offset(), from_constraint(), until_constraint() ) :: Timex.TimezoneInfo.t() | {:error, String.t()}
Create a custom timezone if a built-in one does not meet your needs.
You must provide the name, abbreviation, offset from UTC, daylight savings time offset, and the from/until reference points for when the zone takes effect and ends.
To clarify the two offsets, offset_utc
is the absolute offset relative to UTC,
offset_std
is the offset to apply to offset_utc
which gives us the offset from UTC
during daylight savings time for this timezone. If DST does not apply for this zone, simply
set it to 0.
The from/until reference points must meet the following criteria:
- Be set to `:min` for from, or `:max` for until, which represent
"infinity" for the start/end of the zone period.
- OR, be a tuple of {day_of_week, datetime}, where:
- `day_of_week` is an atom like `:sunday`
- `datetime` is an Erlang datetime tuple, e.g. `{{2016,10,8},{2,0,0}}`
IMPORTANT: Offsets are in seconds, not minutes, if you do not ensure they
are in the correct unit, runtime errors or incorrect results are probable.
Examples
iex> Elixir.Timex.TimezoneInfo.create("Etc/Test", "TST", 120*60, 0, :min, :max)
%TimezoneInfo{full_name: "Etc/Test", abbreviation: "TST", offset_std: 7200, offset_utc: 0, from: :min, until: :max}
...> Elixir.Timex.TimezoneInfo.create("Etc/Test", "TST", 24*60*60, 0, :min, :max)
{:error, "invalid timezone offset '86400'"}