[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: time.. не могу понять
EvilDev
Всем доброго времени суток!
Все ни как не могу найти решения. Написал на сервере скрипт спемы часового пояса взависимости от города пользователя. Есть скрипт, который преобразует дату и время в что то вроде этого: "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
SlavaFr
time дает обсoлютное время (unixtimestamp)и остается одинаковым независемо от временной зоны.
strtotime дает тоже timestamp (абсолютное время), но преобразует времменой-стринг в зависимости от выставленной времменой зонны.

_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.