неправильная дата

M
На сайте с 01.10.2014
Offline
61
693

всем привет. Есть функция, которая изменяет дату к такому виду: "секунд назад", "минут назад" и т.д. Но отсчет начинается сразу от 2 часов, то есть я только что написал коммент, а функция выдает 2 часа назад. Вот код:

function time_elapsed_string($datetime, $full = false) {

$now = new DateTime;
$ago = new DateTime($datetime);
$diff = $now->diff($ago);

$diff->w = floor($diff->d / 7);
$diff->d -= $diff->w * 7;

$string = array(
'y' => 'year',
'm' => 'month',
'w' => 'week',
'd' => 'day',
'h' => 'hour',
'i' => 'minute',
's' => 'second',
);
foreach ($string as $k => &$v) {
if ($diff->$k) {
$v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : '');
} else {
unset($string[$k]);
}
}

if (!$full) $string = array_slice($string, 0, 1);
return $string ? implode(', ', $string) . ' ago' : 'just now';
}
В чем проблема можем быть?
Лучшая вап клик пп для выкупа подписок (https://mcwap.ru/?r=1153)
[umka]
На сайте с 25.05.2008
Offline
456
#1
mortido:
В чем проблема можем быть?

В часовом поясе

Лог в помощь!
Z0
На сайте с 03.09.2009
Offline
757
#2

Если в коде все верно, то возможно серверное время отличается от вашего. ну это как вариант.

P.S. Опоздал :)

M
На сайте с 01.10.2014
Offline
61
#3

а как указать местное время?

Z0
На сайте с 03.09.2009
Offline
757
#4
mortido:
а как указать местное время?


echo date("h:i:s");
M
На сайте с 01.10.2014
Offline
61
#5
ziliboba0213:

echo date("h:i:s");

просто выводит то же самое, время отстает на 3 часа ровно.

Z0
На сайте с 03.09.2009
Offline
757
#6
mortido:
просто выводит то же самое, время отстает на 3 часа ровно.

Так это местное время сервера, если вам нужно текущее, то так:

echo date('H:i:s', strtotime("+3 hours"));

И вообще эта информация находится через поисковик за 1 секунду :) Что за ленивые люди пошли 🤪

M
На сайте с 01.10.2014
Offline
61
#7
ziliboba0213:
Так это местное время сервера, если вам нужно текущее, то так:
echo date('H:i:s', strtotime("+3 hours"));

И вообще эта информация находится через поисковик за 1 секунду :) Что за ленивые люди пошли 🤪

да ужас. сам поражаюсь)

[umka]
На сайте с 25.05.2008
Offline
456
#8
[Удален]
#9

Проще в php.ini изменить например:

date.timezone = Europe/Kiev

или htaccess

php_value date.timezone 'Europe/Kiev'

проверить можно изначально:

<?php

print_r( DateTimeZone::listIdentifiers( ) );
?>

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий