2011-01-01 4 views
1

Я пытаюсь выяснить, почему php date() дает мне неправильное время, устанавливая фактическое время назад 2 часа.Функция PHP date() не дает правильного времени

<?php echo date("Y-m-d H:i:s"); ?> 

Это дает 2011-01-01 03:14:04 вместо 2011-01-01 05:14:04. Час уменьшен на 2. Я не изменяю свой часовой пояс для даты(), и когда пользователи посещают сайт, я хочу, чтобы время было правильным для их часового пояса. Как я могу заставить это работать с помощью php?

+0

Где работает ваш сервер? Что означает 'echo date_default_timezone_get();' return? –

+1

Возможный дубликат [Автоматическое обнаружение текущего локального времени пользователя с помощью JavaScript или PHP] (http://stackoverflow.com/questions/863474/automatically-detect-users-current-local-time-with-javascript-or-php) –

ответ

1

установки часового пояса Try: date_default_timezone_set или с помощью обновления на ini

: вы не можете установить правильную дату для пользователей. Javascript может справиться с этим, но вам придется полагаться на систему пользователя, чтобы определить свое время.

2

Вам нужно будет использовать либо date_default_timezone_set(), либо объект datetime, и пользователь должен будет установить свой собственный часовой пояс в меню опций где-нибудь.

В противном случае PHP является языком на стороне сервера и не имеет представления о том, в какое время он находится на конце пользователя.

Вам нужно будет использовать язык на стороне клиента, JavaScript. Вы можете либо просто статично, либо отображать текущее системное время пользователя, либо если по какой-то причине вам нужно было получить время на PHP, вы можете использовать некоторые подобные AJAX скрипты, чтобы JavaScript отправил свое время в скрипт при загрузке страницы ,

0

// Изменение даты в формате

$dateInfo = date_parse_from_format('m-d-Y', $data['post_date']); 
$unixTimestamp = mktime(
     $dateInfo['hour'], $dateInfo['minute'], $dateInfo['second'], 
     $dateInfo['month'], $dateInfo['day'], $dateInfo['year'] 
    ); 
$data['post_date']=date('Y-m-d',$unixTimestamp); 
1

это происходит потому, что по умолчанию он показывает GMT время вы можете изменить для вашего региона с помощью следующего кода

date_default_timezone_set("Asia/Bangkok");//set you countary name from below timezone list 
    echo $date = date("Y-m-d H:i:s", time());//now it will show "Asia/Bangkok" or your date time 

Список поддерживаемых Часовые пояса http://www.php.net/manual/en/timezones.php

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