Блог mev'a

все, что я хотел сказать

Появилась задача определить разницу в датах с указанием единиц времени. Причем:

  1. даты могут быть две или одна (с текущего момента до ...)
  2. язык единиц времени должен выбираться пользователем

Решение вылилось в класс TimeDiff на php. Пример и ссылки дальше.

Описание класса TimeDiff.

Конструктор класса

public function __construct($date1,$date2=false, $curlang='ru') {}

Где:

  1. $data1 - дата от/до которой ведется отсчет
  2. $data2 - вторая дата для указания конкретного диапазона. Если $data2==false, то эта переменная примет значения текущего времени
  3. $curlang - язык единиц времени (пока доступны ru и en)

Время считается "по модулю" - независимо от того, какая из двух дат больше, результат всегда будет положительным.

Функция TimeDiff

public function TimeDiff($filter='dhis',$nozerro=false){}

Где:

  1. $filter - фильтр единиц для вывода (d - дни, h - часы, i - минуты, s - секунды)
  2. $nozerro - определяет показывать ли нулевые значения (false - показывать, true - не показывать)

Пример вызова

  1. // русские единицы
  2. $text=new timediff('01.01.2009 00:00:00',false, 'ru');
  3. echo 'До Нового года осталось: '.$text->TimeDiff('dhis',true);
  4. // единица на английском
  5. $text=new timediff('01.01.2009 00:00:00',false, 'en');
  6. echo 'До Нового года осталось: '.$text->TimeDiff('dhis',true);
  7. $text=new timediff('26.12.2008 00:00:00',false, 'ru');
  8. // выводим с нулями
  9. echo 'До конца этого дня : '.$text->TimeDiff('dhis',false);
  10. $text=new timediff('26.12.2008 00:00:00',false, 'ru');
  11. // прячем нули и секунды
  12. echo 'До конца этого дня : '.$text->TimeDiff('dhi',true);
  13. // разницу в конкретных датах
  14. $text=new timediff('25.12.2008 10:15:00','25.12.2008 19:00:00', 'ru');
  15. echo 'Я работаю сегодня : '.$text->TimeDiff('dhis',true);

Результат выполнения:
test_timediff

Скачать класс можно тут (v0.1).

ЗЫ: если у кого какие вопросы возникнут - пишем в комменты, с удовольствием отвечу.

Популярность: 1%

Связанные записи

Распечатать запись  Распечатать запись
Получить PDF
Добавить в Facebook Добавить в Twitter Добавить в Google-Buzz Добавить в Яндекс-закладки Добавить в Вконтакте


Оставить комментарий или два