PHP функция date () не дает правильное время - PullRequest
1 голос
/ 01 января 2011

Я пытаюсь выяснить, почему php date () дает мне неправильное время, устанавливая реальное время на 2 часа.

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

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

Ответы [ 4 ]

2 голосов
/ 14 декабря 2016

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

   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

2 голосов
/ 01 января 2011

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

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

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

1 голос
/ 01 января 2011

Попробуйте установить часовой пояс: date_default_timezone_set или через ini

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

0 голосов
/ 10 июня 2015

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

$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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...