Я использую этот код для генерации вчерашнего начала дня в PST (aka America / Los_Angeles) времени. Я не могу понять, как преобразовать результат в 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"));
Класс 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
Других решений пока нет …