Что такое временная метка Unix и зачем ее использовать?
Что такое временная метка Unix? В PHP, при работе с датами, функция strtotime()
выводит некоторое целое значение -- что это такое? Я попытался узнать об этом, но не смог получить удовлетворительного ответа, особенно почему нам нужно конвертировать даты с помощью strtotime()
.
1 ответов
что такое временная метка Unix
проще говоря, метка времени Unix-это способ отслеживать время как общее количество секунд. Этот счет начинается в эпоху Unix 1 января 1970 года в UTC. Следовательно,метка времени Unix-это просто количество секунд между определенной датой и эпохой Unix. Следует также отметить, что в данный момент технически не меняется независимо от того, где вы находитесь на земном шаре. Это очень полезно для компьютерных систем для отслеживания и сортировки датированной информации в динамических и распределенных приложениях как онлайн, так и на стороне клиента. Причина, по которой временные метки Unix используются многими веб-мастерами, заключается в том, что они могут представлять все часовые пояса сразу. Для получения дополнительной информации прочитайте статья в Википедии.
что это strtotime()
и как это полезно
как следует из названия,strtotime()
функция используется для преобразования строки даты в метку времени Unix (str to time).
С руководство по PHP документация strtotime()
:
strtotime - разбор любого английского текстового описания datetime в метку времени Unix
например, скажем, вы хотите получить метку времени Unix для даты 25 December 2013
, тогда вы могли бы использовать strtotime()
вот так:
echo strtotime("25 December 2013"), "\n"; // => 1387909800
strtotime()
может также обрабатывать относительные форматы времени и даты. Например, рассмотрим следующий:
echo strtotime("+1 month"), "\n"; // => 1390980039
echo strtotime("last day of next month"), "\n"; // => 1391152839
вот некоторые основные примеры. strtotime()
может обрабатывать очень сложные форматы даты тоже. См.документация для получения дополнительной информации.
когда я должен использовать метку
метка времени Unix интерпретируется одинаково независимо от региона и вычисляется из одного и того же момента времени независимо от часового пояса. Если у вас есть веб-приложение, которое используется в нескольких часовых поясах, и вам нужна дата / время для отражения настройки отдельных пользователей, используйте метку времени.
в случае strtotime()
, он в основном используется для преобразования между форматами дат. С strtotime()
может анализировать почти любую строку даты, она используется для преобразования строки даты в метку времени. После того, как у вас есть метка времени, вы можете отформатировать его, как вы хотите, используя date()
, или аналогичные функции.
ограничения strtotime()
в 32-разрядной системе максимальное значение целого числа 2,147,483,647. Самое дальнее время, которое может быть представлено таким образом, - 03:14:07 UTC во вторник, 19 января 2038 года. Это также известно как 2038 год проблема.
см. эту заметку в руководство по PHP:
допустимый диапазон метки времени обычно от пт, 13 дек 1901 20:45:54 UTC до Вт, 19 янв 2038 03:14: 07 UTC. (Эти даты соответствуют минимальному и максимальному значению 32-битового целого числа со знаком.) Кроме того, не все платформы поддерживают отрицательные временные метки, поэтому диапазон дат может быть ограничен не ранее эпохи Unix. Это означает, что, например, даты до 1 января 1970 года не будут работать в Windows, некоторых дистрибутивах Linux и нескольких других операционных системах. Однако PHP 5.1.0 и более новые версии преодолевают это ограничение.
использовать объекты DateTime
если вы работаете с датами за пределами 13 Dec 1901
to 19 Jan 2038
range, затем рассмотрите возможность использования PHP DateTime объекты, которые могут работать с гораздо более широком диапазоне дат. DateTime может представлять приблизительно 293 миллиарда лет в любом направлении.
класс DateTime доступен в версиях PHP >= 5.2.0. Если вы используете версию PHP, которая выше >= 5.2.0, вы должны использовать DateTime при работе с датами и временем. Это лучший способ уйти. Если у вас более старая версия PHP, обновить уже. Все, что до 5.3.0 древняя.
- использовать
DateTime::__construct()
илиDateTime::createFromFormat()
создатьDateTime