Играем с датой-временем (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
