Играем с датой-временем (timestamp)

О чем речь вообще?

В компьютерной жизни прочно заняла свое место так называемая временн́ая метка, timestamp. В данном случае я использую термин timestamp в качестве UNIX (POSIX) времени (c 1 января 1970 года 00 часов 00 минут 00 секунд). Возвращает текущую временную метку в PHP функция time().

Число это удобно для хранения и использования. Например, в качестве времени создания, модификации и публикации статьи/комментария в базе данных. А в основной программе налаживаем вывод всех комментариев за сегодня в диапазоне от текущей временной метки до… э-э-э-хм… и правда, до чего? А если надо вывести все комментарии за первую неделю прошлого месяца?

Очевидно, что с начала суток. Что у нас будет началом суток? По аналогии к первому абзацу возьмем 00 часов 00 минут 00 секунд сегодняшней даты. То есть, нам надо это будет вычислять из текущего времени.

Задание к исполнению

Написать функции, вычисляющие на основе поданной в них в качестве входного параметра временной метки (которая может быть любой датой-временем, не только текущей):

  • начало дня;
  • конец дня (23:59:59);
  • начало недели (день — понедельник, разумеется);
  • конец недели;
  • начало-конец месяца;
  • начало-конец года.

Для чрезмерно нахальных, которым сильно легко

Оформить все это дело в класс MyTimeUtils (сами обзовите, как хотите) статичными методами.

Переписать функции под условие, что входной параметр (временная метка) может быть, а может и не быть (тогда брать текущую timestamp).

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

  • начало первой недели года;
  • конец последней недели года.

В чём прикол? А в том, что новый год у нас редко выпадает с воскресенья на понедельник, потому первая неделя года может начаться, например, со второго января, а последняя — закончиться 27-го декабря, как-то так.

Решать можно как на PHP, так и на чём угодно, собственно. На Delphi, например.

04.08.2010 | 23:16




 
Добавить комментарий