Функция возвращает неверные данные

127
20 апреля 2018, 14:24

Здравствуйте!

есть переменная $action['date'] в ней хранится unix метка 1524168000 (2018-04-19 20:00:00)

Есть функция:

function unixConvert($date) {
    $date = date("Y-m-d H:i:s", $date);
    return $date;
}

которая возвращает дату в читабельном виде.

К примеру:

echo unixConvert($action['date'])

функция должна вернуть вот такую строку 2018-04-19 20:00:00 а возвращает 2018-04-19 23:00:00, то есть на 3 часа больше.

Подскажите в чем может быть дело?

Answer 1

Когда в Гринвиче 2018-04-19 20:00:00, то во временной зоне +3, соответственно 2018-04-19 23:00:00.

Unix timestamp считается по UTC (зона +0).

Т.е., когда вы передаете в date временную метку Unix, то функция считает, что это время по Гринвичу, а текстовое представление возвращает с учетом временной зоны сервера.

Попробуйте выполнить date("r", $timestamp) и увидите, какая выставлена зона.

Answer 2

В качестве самого простого (и не самого оптимального решения) можно расширить вашу функцию, чтобы принимала разницу в часах и учитывала ее:

function unixConvert($date, $timezone) {
    $timeshift = $timezone * 3600;
    $date = date("Y-m-d H:i:s", $date + $timeshift);
    return $date;
} 
READ ALSO
Выбрать нужный <div> javascript

Выбрать нужный <div> javascript

Есть такая структура:

190
Вывод содержимого поста на Wordpress + Ajax + Visual Composer

Вывод содержимого поста на Wordpress + Ajax + Visual Composer

Уже два дня ломаю себе голову :( Задача такая: нужно в блок по клику на ссылку поста выводить содержимое поста с учетом шорткодов и стилей Visual...

236
Совместимость jquery

Совместимость jquery

есть старый сайт, в котором кнопки которые вызывают popup с формами работают с jquerylib

183
Как сделать счетчик чтобы он обнулялся в 00:00?

Как сделать счетчик чтобы он обнулялся в 00:00?

Всем привет, помогите пожалуйста со счетчиком

204