Что такое временная метка 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 древняя.