Все ни как не могу найти решения. Написал на сервере скрипт спемы часового пояса взависимости от города пользователя. Есть скрипт, который преобразует дату и время в что то вроде этого: "6 минут назад". Проблема в том, что он не учитывает часовой пояс.
public function timeAgo($date)
{
if (empty($date))
return false;
$lengths = array(60, 60, 24, 7, 4.35, 12, 10);
$periods = array(
array('секунду', 'секунды', 'секунд'),
array('минуту', 'минуты', 'минут'),
array('час', 'часа', 'часов'),
array('день', 'дня', 'дней'),
array('неделю', 'недели', 'недель'),
array('месяц', 'месяца', 'месяцев'),
array('год', 'года', 'лет'),
array('', '', '')
);
$now = time();
$unix_date = strtotime($date);
// Будущее или прошедшее время
if ($now > $unix_date) {
$difference = $now - $unix_date;
$tense = 'назад';
} else {
$difference = $unix_date - $now;
$tense = 'осталось';
}
// TODO: Можно на while или foreach заменить, быстрее работать будет
for ($j = 0; $difference >= $lengths[ $j ] && $j < count($lengths) - 1; $j++)
$difference /= $lengths[ $j ];
// Склонения слов
$difference = round($difference);
if ($difference == 0)
return 'только что';
$k = 2;
switch ($difference % 10) {
case 1:
if ($difference == 1 || $difference > 11)
$k = 0;
break;
case 2:
case 3:
case 4:
if ($difference < 5 || $difference > 14)
$k = 1;
break;
}
return $difference . ' ' . $periods[ $j ][ $k ] . ' ' . $tense;
}
При смене часового пояса, date срабатывает, а вот time вообще не реагирует.
Может я не совсем понимаю, как работает time, но как переписать скрипт так, чтобы он учитывал установленный часовой пояс?
_____________
HTML5, CSS3, jQuery, Node.js, PHP, Yii, Joomla, MySQL, MongoDb, GIMP