From 3fd781f1586c4039ece0db575fd342a1953503ba Mon Sep 17 00:00:00 2001
From: Nathaniel Catchpole <catch@35733.no-reply.drupal.org>
Date: Sat, 5 Aug 2017 10:37:56 +0900
Subject: [PATCH] Issue #2889814 by mpdonadio: DateTimePlus doesn't apply the
 correct time zone when converting a string with an offset

---
 core/lib/Drupal/Component/Datetime/DateTimePlus.php | 6 +++++-
 core/lib/Drupal/Core/Datetime/DrupalDateTime.php    | 6 +++++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/core/lib/Drupal/Component/Datetime/DateTimePlus.php b/core/lib/Drupal/Component/Datetime/DateTimePlus.php
index 0158eac4b580..457b73e84703 100644
--- a/core/lib/Drupal/Component/Datetime/DateTimePlus.php
+++ b/core/lib/Drupal/Component/Datetime/DateTimePlus.php
@@ -250,7 +250,11 @@ public static function createFromFormat($format, $time, $timezone = NULL, $setti
    *   (optional) A date/time string. Defaults to 'now'.
    * @param mixed $timezone
    *   (optional) \DateTimeZone object, time zone string or NULL. NULL uses the
-   *   default system time zone. Defaults to NULL.
+   *   default system time zone. Defaults to NULL. Note that the $timezone
+   *   parameter and the current timezone are ignored when the $time parameter
+   *   either is a UNIX timestamp (e.g. @946684800) or specifies a timezone
+   *   (e.g. 2010-01-28T15:00:00+02:00).
+   *   @see http://php.net/manual/en/datetime.construct.php
    * @param array $settings
    *   (optional) Keyed array of settings. Defaults to empty array.
    *   - langcode: (optional) String two letter language code used to control
diff --git a/core/lib/Drupal/Core/Datetime/DrupalDateTime.php b/core/lib/Drupal/Core/Datetime/DrupalDateTime.php
index 572a6e3c6620..d5fdbe22b9ff 100644
--- a/core/lib/Drupal/Core/Datetime/DrupalDateTime.php
+++ b/core/lib/Drupal/Core/Datetime/DrupalDateTime.php
@@ -34,7 +34,11 @@ class DrupalDateTime extends DateTimePlus {
    *   A date/input_time_adjusted string. Defaults to 'now'.
    * @param mixed $timezone
    *   PHP DateTimeZone object, string or NULL allowed.
-   *   Defaults to NULL.
+   *   Defaults to NULL. Note that the $timezone parameter and the current
+   *   timezone are ignored when the $time parameter either is a UNIX timestamp
+   *   (e.g. @946684800) or specifies a timezone
+   *   (e.g. 2010-01-28T15:00:00+02:00).
+   *   @see http://php.net/manual/en/datetime.construct.php
    * @param array $settings
    *   - validate_format: (optional) Boolean choice to validate the
    *     created date using the input format. The format used in
-- 
GitLab