function DateTimePlus::prepareTimezone

Same name in other branches
  1. 9 core/lib/Drupal/Component/Datetime/DateTimePlus.php \Drupal\Component\Datetime\DateTimePlus::prepareTimezone()
  2. 8.9.x core/lib/Drupal/Component/Datetime/DateTimePlus.php \Drupal\Component\Datetime\DateTimePlus::prepareTimezone()
  3. 10 core/lib/Drupal/Component/Datetime/DateTimePlus.php \Drupal\Component\Datetime\DateTimePlus::prepareTimezone()

Prepares the input timezone value.

Changes the timezone before trying to use it, if necessary. Most importantly, makes sure there is a valid timezone object before moving further.

Parameters

mixed $timezone: Either a timezone name or a timezone object or NULL.

Return value

\DateTimeZone The massaged time zone.

2 calls to DateTimePlus::prepareTimezone()
DateTimePlus::__construct in core/lib/Drupal/Component/Datetime/DateTimePlus.php
Constructs a date object set to a requested date and timezone.
DrupalDateTime::prepareTimezone in core/lib/Drupal/Core/Datetime/DrupalDateTime.php
Overrides prepareTimezone().
1 method overrides DateTimePlus::prepareTimezone()
DrupalDateTime::prepareTimezone in core/lib/Drupal/Core/Datetime/DrupalDateTime.php
Overrides prepareTimezone().

File

core/lib/Drupal/Component/Datetime/DateTimePlus.php, line 446

Class

DateTimePlus
Wraps DateTime().

Namespace

Drupal\Component\Datetime

Code

protected function prepareTimezone($timezone) {
    // If the input timezone is a valid timezone object, use it.
    if ($timezone instanceof \DateTimezone) {
        $timezone_adjusted = $timezone;
    }
    elseif (!empty($timezone) && is_string($timezone)) {
        $timezone_adjusted = new \DateTimeZone($timezone);
    }
    // Default to the system timezone when not explicitly provided.
    // If the system timezone is missing, use 'UTC'.
    if (empty($timezone_adjusted) || !$timezone_adjusted instanceof \DateTimezone) {
        $system_timezone = date_default_timezone_get();
        $timezone_name = !empty($system_timezone) ? $system_timezone : 'UTC';
        $timezone_adjusted = new \DateTimeZone($timezone_name);
    }
    // We are finally certain that we have a usable timezone.
    return $timezone_adjusted;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.