diff --git a/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateTimeCustomFormatter.php b/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateTimeCustomFormatter.php index 1166b68..8e54561 100644 --- a/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateTimeCustomFormatter.php +++ b/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateTimeCustomFormatter.php @@ -5,6 +5,7 @@ use Drupal\Core\Datetime\DrupalDateTime; use Drupal\Core\Field\FieldItemListInterface; use Drupal\Core\Form\FormStateInterface; +use Drupal\datetime\Plugin\Field\FieldType\DateTimeItem; /** * Plugin implementation of the 'Custom' formatter for 'datetime' fields. @@ -54,7 +55,13 @@ public function viewElements(FieldItemListInterface $items, $langcode) { */ protected function formatDate($date) { $format = $this->getSetting('date_format'); - $timezone = $this->getSetting('timezone_override') ?: $date->getTimezone()->getName(); + $timezone_override = $this->getSetting('timezone_override'); + if ($this->getSetting('timezone_display') === DateTimeItem::TIMEZONE_NONE && $timezone_override) { + $timezone = $timezone_override; + } + else { + $timezone = $date->getTimezone()->getName(); + } return $this->dateFormatter->format($date->getTimestamp(), 'custom', $format, $timezone != '' ? $timezone : NULL); } diff --git a/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateTimeDefaultFormatter.php b/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateTimeDefaultFormatter.php index 8f703fb..5fc5ef9 100644 --- a/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateTimeDefaultFormatter.php +++ b/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateTimeDefaultFormatter.php @@ -4,6 +4,7 @@ use Drupal\Core\Datetime\DrupalDateTime; use Drupal\Core\Form\FormStateInterface; +use Drupal\datetime\Plugin\Field\FieldType\DateTimeItem; /** * Plugin implementation of the 'Default' formatter for 'datetime' fields. @@ -32,7 +33,13 @@ public static function defaultSettings() { */ protected function formatDate($date) { $format_type = $this->getSetting('format_type'); - $timezone = $this->getSetting('timezone_override') ?: $date->getTimezone()->getName(); + $timezone_override = $this->getSetting('timezone_override'); + if ($this->getSetting('timezone_display') === DateTimeItem::TIMEZONE_NONE && $timezone_override) { + $timezone = $timezone_override; + } + else { + $timezone = $date->getTimezone()->getName(); + } return $this->dateFormatter->format($date->getTimestamp(), $format_type, '', $timezone != '' ? $timezone : NULL); } diff --git a/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateTimeFormatterBase.php b/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateTimeFormatterBase.php index 3d8684c..49d9261 100644 --- a/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateTimeFormatterBase.php +++ b/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateTimeFormatterBase.php @@ -138,12 +138,14 @@ public function settingsSummary() { $summary = parent::settingsSummary(); if ($this->fieldDefinition->getFieldStorageDefinition()->getSetting('datetime_type') === DateTimeItem::DATETIME_TYPE_DATETIME) { - if ($override = $this->getSetting('timezone_override')) { - $summary[] = $this->t('Time zone: @timezone', array('@timezone' => $override)); + $timezone_display = $this->getSetting('timezone_display'); + $timezone_override = $this->getSetting('timezone_override'); + if ($timezone_display === DateTimeItem::TIMEZONE_NONE && $timezone_override) { + $summary[] = $this->t('Time zone: @timezone', array('@timezone' => $timezone_override)); } else { // @todo Make human-readable. - $summary[] = $this->t('Time zone display: @timezone', array('@timezone' => $this->getSetting('timezone_display'))); + $summary[] = $this->t('Time zone display: @timezone', array('@timezone' => $timezone_display)); } } @@ -219,8 +221,9 @@ protected function setTimeZone(DrupalDateTime $date, $timezone = NULL) { protected function getFormatSettings() { $settings = []; - if ($this->getSetting('timezone_override') != '') { - $settings['timezone'] = $this->getSetting('timezone_override'); + $timezone_override = $this->getSetting('timezone_override'); + if ($this->getSetting('timezone_display') === DateTimeItem::TIMEZONE_NONE && $timezone_override) { + $settings['timezone'] = $timezone_override; } return $settings; diff --git a/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateTimePlainFormatter.php b/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateTimePlainFormatter.php index 46a7bfb..cb6084b 100644 --- a/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateTimePlainFormatter.php +++ b/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateTimePlainFormatter.php @@ -41,7 +41,13 @@ public function viewElements(FieldItemListInterface $items, $langcode) { */ protected function formatDate($date) { $format = $this->getFieldSetting('datetime_type') == DateTimeItem::DATETIME_TYPE_DATE ? DATETIME_DATE_STORAGE_FORMAT : DATETIME_DATETIME_STORAGE_FORMAT; - $timezone = $this->getSetting('timezone_override') ?: $date->getTimezone()->getName(); + $timezone_override = $this->getSetting('timezone_override'); + if ($this->getSetting('timezone_display') === DateTimeItem::TIMEZONE_NONE && $timezone_override) { + $timezone = $timezone_override; + } + else { + $timezone = $date->getTimezone()->getName(); + } return $this->dateFormatter->format($date->getTimestamp(), 'custom', $format, $timezone != '' ? $timezone : NULL); }