2013-06-09 2 views
2

Я использую функцию PHP gmdate для вставки текущей даты в базу данных, но она показывает время по Гринвичу, могу ли я изменить ее на мой часовой пояс +3?Изменение часового пояса функции gmdate PHP

это код

$sql = "INSERT INTO Students 
VALUES ('','" . $info[$i]['firstname'] . "', '" . $info[$i]['lastname'] . "', 
     '" . $info[$i]['sex'] . "', '" . $info[$i]['major'] . "', 
     '" . $info[$i]['favorite'] . "', '" . $info[$i]['GPA'] . "', 
     '". gmdate('m/d/Y g:i:s A') . "')" ; 
+2

'gmdate' возвращает * GM * время ...?! Вы не говорите! O_o – deceze

ответ

5

«+3» не является «часовым поясом». Это смещение от UTC/GMT, которое может меняться в течение года на основе настроек DST. A часовой пояс что-то типа «Европа/Берлин» или «Азия/Токио».

После того, как вы определились с реальной часового пояса:

date_default_timezone_set('Europe/Berlin'); 
echo date('m/d/Y g:i:s A'); 

или

$date = new DateTime('now', new DateTimeZone('Europe/Berlin')); 
echo $date->format('m/d/Y g:i:s A'); 

Если все, что вы должны работать с это «+3», то а) вы ввинчиваетесь и b) вы можете просто добавить «3 часа» к любой отметке времени:

date_default_timezone_set('UTC'); 

echo date('m/d/Y g:i:s A', strtotime("$offset hours")); 

echo date('m/d/Y g:i:s A', time() + ($offset * 60 * 60)); 

$date = new DateTime; 
$date->modify("$offset hours"); 
echo $date->format('m/d/Y g:i:s A'); 
4

Нет, вы должны использовать вместо date(). Или используйте объект DateTime для большего контроля над часовыми поясами.

Я бы рекомендовал хранить даты и время в GMT, хотя и рассчитывать их обратно в свой часовой пояс, когда вы показываете данные.

$datetime = new DateTime('now'); 
$dateTime->setTimeZone(new DateTimeZone('Europe/London')); // Change to london time. 
echo $dateTime->format('m/d/Y g:i:s A'); 

Вы всегда должны работать с именами часового пояса, а не смещениями. Вы говорите о смете +3, но я уверен, что вы живете только в UTC + 3: 00 6 месяцев в году.

+0

, но как я могу рассчитать его, когда вы показываете data.just put +3? что не сработает – sabsab

+0

Я обновил свой ответ, чтобы показать вам, как изменить часовые пояса. – Evert

Смежные вопросы