Skip to content

Commit

Permalink
Reroll & simplify 2
Browse files Browse the repository at this point in the history
  • Loading branch information
jonathanjfshaw committed Dec 19, 2017
1 parent 8f3991e commit e778cb8
Showing 1 changed file with 12 additions and 1 deletion.
13 changes: 12 additions & 1 deletion src/Drupal/Driver/Fields/Drupal8/DatetimeHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

namespace Drupal\Driver\Fields\Drupal8;

use DateTime;
use DateTimeZone;

/**
* Datetime field handler for Drupal 8.
*/
Expand All @@ -11,14 +14,22 @@ class DatetimeHandler extends AbstractHandler {
* {@inheritdoc}
*/
public function expand($values) {
$siteTimezone = new DateTimeZone(\Drupal::config('system.date')->get('timezone.default'));
$storageTimezone = new DateTimeZone(DATETIME_STORAGE_TIMEZONE);
foreach ($values as $key => $value) {
if (strpos($value, "relative:") !== FALSE) {
$relative = trim(str_replace('relative:', '', $value));
// Get time, convert to ISO 8601 date in GMT/UTC, remove TZ offset.
$values[$key] = substr(gmdate('c', strtotime($relative)), 0, 19);
}
else {
$values[$key] = str_replace(' ', 'T', $value);
// A Drupal install has a default site timezone, but nonetheless
// uses UTC for internal storage. If no timezone is specified in a date
// field value by the step author, assume it is in the default timezone of
// the Drupal install, and therefore transform it into UTC for storage.
$date = new DateTime($value, $siteTimezone);
$date->setTimezone($storageTimezone);
$values[$key] = $date->format('Y-m-d\TH:i:s');
}
}
return $values;
Expand Down

0 comments on commit e778cb8

Please sign in to comment.