Использования time()
такого же, как strtotime("now")
и вам не нужно беспокоиться о преобразовании часового пояса метки времени , как временная метка не имеет часовой пояс:
Does PHP time() return a GMT/UTC Timestamp?
time
возвращает метку времени UNIX, которая является независимой часовой пояс. С отметка времени UNIX обозначает секунды с 1970 UTC, вы можете сказать, что это UTC, но на самом деле нет часовой зоны.
Затем вы можете сохранить эту метку времени в своей базе данных. Когда вы его получите, вы можете преобразовать его в часовой пояс пользователей. С чем-то вроде этого:
date_default_timezone_set('UTC');
$timestamp = '1429066967';
//Supported Timezones: http://php.net/manual/en/timezones.php
$userTimezone = 'America/Los_Angeles';
$dt = new DateTime();
// Set the timestamp
$dt->setTimestamp($timestamp);
// Set the timezone
$dt->setTimezone(new DateTimeZone($userTimezone));
// Format the date
$date = $dt->format('Y-m-d H:i:s');
echo $date;
Выходы: 2015-04-14 20:02:47
Но если вы только имеете UTC смещение вы могли бы попробовать это:
date_default_timezone_set('UTC');
$timestamp = '1429066967';
$offset = -8;
$userTimezone = timezone_name_from_abbr("", $offset*3600, false);
$dt = new DateTime();
// Set the timestamp
$dt->setTimestamp($timestamp);
// Set the timezone
$dt->setTimezone(new DateTimeZone($userTimezone));
// Format the date
$date = $dt->format('Y-m-d H:i:s');
echo $date;
Какие также выходы: 2015-04-14 20:02:47
Вы всегда можете получить время UTC с помощью gmdate ('Ymd H: i: s'); –
Прохладный. Поэтому я могу хранить strtotime (gmdate ('Y-m-d H: i: s')), а затем, когда я получаю, просто добавляю количество часов, на которые пользовательский часовой пояс компенсируется? – maxhud