PHP конвертирует результат mktime в UTC

Я использую этот код для генерации вчерашнего начала дня по тихоокеанскому времени (также известному как Америка/Лос-Анджелес). Я не могу понять, как преобразовать результат в UTC.

date_default_timezone_set("America/Los_Angeles");
$time1 = date("Y-m-d H:i:s", mktime(0,0,0, date('n'), date('j')-1, date('Y')));

Я пробовал это, но $time1 не дата и время, это строка. Так что следующее не сработает.

$time1->setTimezone(new DateTimeZone("UTC")); 

person apadana    schedule 16.08.2016    source источник


Ответы (1)


Класс DateTime может сделать все это за вас.

$date = new DateTime(null, new DateTimeZone('America/Los_Angeles')); // will use now

echo $date->format('d/m/Y H:i:s');   //16/08/2016 16:13:29

$date->setTime(0,0,0);  
$date->modify('-1 day');
echo $date->format('d/m/Y H:i:s');   // 15/08/2016 00:00:00

$date->setTimezone(new DateTimeZone('UTC'));
echo $date->format('d/m/Y H:i:s');    // 15/08/2016 07:00:00
person RiggsFolly    schedule 16.08.2016
comment
Вот это достойный пример кода... рассмотрите возможность публикации в разделе документации :). - person YvesLeBorg; 17.08.2016