DateTime.shift_zone
You're seeing just the function
shift_zone
, go back to DateTime module for more information.
Link to this function
shift_zone(datetime, time_zone, time_zone_database \\ Calendar.get_time_zone_database())
View Source (since 1.8.0)Specs
shift_zone(t(), Calendar.time_zone(), Calendar.time_zone_database()) :: {:ok, t()} | {:error, :time_zone_not_found | :utc_only_time_zone_database}
Changes the time zone of a DateTime
.
Returns a DateTime
for the same point in time, but instead at
the time zone provided. It assumes that DateTime
is valid and
exists in the given time zone and calendar.
By default, it uses the default time zone database returned by
Calendar.get_time_zone_database/0
, which defaults to
Calendar.UTCOnlyTimeZoneDatabase
which only handles "Etc/UTC" datetimes.
Other time zone databases can be passed as argument or set globally.
See the "Time zone database" section in the module docs.
Examples
iex> {:ok, pacific_datetime} = DateTime.shift_zone(~U[2018-07-16 10:00:00Z], "America/Los_Angeles", FakeTimeZoneDatabase)
iex> pacific_datetime
#DateTime<2018-07-16 03:00:00-07:00 PDT America/Los_Angeles>
iex> DateTime.shift_zone(~U[2018-07-16 10:00:00Z], "bad timezone", FakeTimeZoneDatabase)
{:error, :time_zone_not_found}