/ / Промяна на часовата зона на извлечената дата в php - php, date, datetime, drupal

Промяна на часовата зона на изтеглената дата в php - php, дата, datetime, drupal

Извличам датата във формат 2013-09-15 08:45:00 от базата данни, която е зададена в UTC и трябва да я променя на друга динамична часова зона (въз основа на потребител)

Досега имам

$datetime = $row->field_data_field_performance_times_field_performance_times_v;
$eventDate = DateTime::createFromFormat("Y-m-d H:i:s", $datetime, new DateTimeZone($user->timezone));
$performance_time = date_format($eventDate, "l, j F, Y, H:i");

Но това не "т промяна на часовата зона. Някакви идеи какво"? В моя случай трябва да е +2 часа.

Отговори:

7 за отговор № 1

Въведеното от вас време е в UTC, а не в потребителската зона. Така че първо трябва да създадете обект от време в UTC и след това да зададете / промените часовата зона на потребителя:

$dt = new DateTime("2013-09-15 08:45:00", new DateTimeZone("UTC"));
print_r($dt);
/*
DateTime Object
(
[date] => 2013-09-15 08:45:00
[timezone_type] => 3
[timezone] => UTC
)
*/

Сега имате datetime в UTC часовата зона. Ако искате да промените часовата зона, просто се обадете ->setTimezone() на обект DateTime:

$dt->setTimezone(new DateTimeZone("Europe/Berlin"));
print_r($dt);
/*
DateTime Object
(
[date] => 2013-09-15 10:45:00
[timezone_type] => 3
[timezone] => Europe/Berlin
)
*/

послепис защото вход 2013-09-15 08:45:00 е в стандартен формат за дата и час, не е нужно да използвате DateTime::createFromFormat.