Временные метки на PHP: timestamp и вычисление времени

Время всегда имеет значение. Сайт, не контролирующий время и не использующий его непрерывно, не то чтоб не имеет права на жизнь, но однозначно не относится к полнофункциональным современным интернет-ресурсам.

Функции PHP для работы с временем

На PHP время и дата представлены набором функций, достаточным для работы без ограничений, и возможностью приведения времени и даты к единому основанию. Разработчик всегда может получить метку времени для фиксирования (отслеживания) событий и выполнения вычислений дат.

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

В принципе, двух функций (getTimeStamp, GetDate) вполне достаточно для решения любой задачи при работе с датой и/или временем. Но искушенный разработчик может использовать и другие функции.

Существенно: на PHP timestamp - это своего рода числовая метка, которая каждую секунду приобретает новый числовой смысл (значение). Исторически так сложилось, что это число есть количество секунд, прошедших с полуночи 1 января 1970 года.

Объективная реальность и значение Timestamp

В программировании всегда было много эпохальных дат. Как всякий приличный программист помнит дату своей самой первой программы, так и семейство юниксоидов чтит начало своей эпохи.

При этом идея за счет метода реализации ограничена по времени. Пользоваться ею можно лишь до 19 января 2038 года. В 03:14:08 число секунд, прошедших с 01.01.1970 года, достигнет 2^31 (2147483648), что делает это число отрицательным. Говорят, что использование не 32-битной, а 64-битной переменной для хранения времени позволит отсрочить проблему ещё на 300 миллиардов лет: программисты любят баги, как шутки, особенно после 2000 года.

Вычисление периода и определение даты

Время, представленное простым числом, дает возможность иметь простую арифметику.

Интересна идея использования этой арифметики в качестве ключей записей и/или уникальных событий. Используя в программе на PHP timestamp в комплексе с идентификатором пользователя или посетителя в качестве ключа, можно не беспокоиться о его уникальности и не тратить на это время.

Обратное преобразование в дату и время

Функция time() непосредственно дает числовое знание метки времени. Вне зависимости от того, как и когда было выполнено преобразование PHP date to timestamp, оно может быть приведено обратно к любому удобному представлению функцией date (format [, timestamp]). Если второй параметр отсутствует, будет выдана текущая дата и/или время. Значение format может быть любым, средства языка предоставляют все необходимые варианты для локализации и форматирования даты и времени.

Хранение в числовом виде всегда предпочтительнее символьного, а кроме того, существенно упрощается возможность сортировки. Важной также является возможность применения простой математики для контроля временных периодов и вычисления дат.

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

Локализация времени

И хотя на PHP date to timestamp и последующая работа с числом представляются удобными и идеальными в современном мире, все же сохранилась масса причин хранить и использовать дату в ее естественном, а порой в исключительно национальном формате.

Мощность современных компьютеров достаточна, базы данных эффективно представляют и хранят информацию, выборка выполняется быстро, а правильный алгоритм делает работу с реальными датами вполне допустимой.

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

При всем этом, манипулируя данными на PHP, timestamp не теряет своего практического значения и заслуживает того, чтобы быть в арсенале квалифицированного разработчика.

Текущий момент времени

Общее правило всех функций времени PHP: текущее время = timestamp. Все даты, заданные вручную пользователем или разработчиком, как правило, это данные: начало или конец периода, дата рождения, приема на работу и пр. Временные данные принято вводить посредством интерактивного календаря. В частности, это datapicker от jQuery, позволяющий вводить дату и/или время непосредственно в среде браузера, на странице сайта.

Datapicker и подобные ему разработки исполнены не только полнофункционально. Они также предоставляют возможность настраиваемой локализации как формата даты/времени, так и наименований месяцев, дней недели, символов разделения элементов даты и времени.

Разработчик может выполнить на PHP date to timestamp для проверки, сравнения, выполнения арифметических операций.

При этом данные, введенные пользователем (посетителем) - это не функция PHP timestamp, предназначение которой состоит в ином. Однако именно эта специфика функций РНР позволяет разработчику контролировать ввод данных о времени и датах пользователем.

Комментарии