Найти тему

Что такое юникстайм или как измерять время одним числом?

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

Допустим, пользователь на вашем сайте зарегистрировался
24 апреля 2023 года в 10:34 утра. Другой пользователь зарегистрировался 6 сентября того же года в 16:47.

Как нам понять, что первый пользователь зарегистрировался раньше?

Год у них один, сентябрь идет после апреля, значит второй пользователь зарегистрирован позже. И вроде это просто.

Но если у нас этих пользователей очень много, и есть отрезки, от одной даты до другой. Например, нам нужны все пользователи, которые зарегистрированы после 15 июня не включая дни с 5 сентября до 9 сентября. Что ж делать то?

Вот бы дата была просто числом. И мы могли бы просто сравнивать даты как числа. Одно число больше, другое меньше. Такое уже придумали. Называется Unix time. Отсчет времени ведется с
1 января 1970 года. Секунда за секундой. Можете попробовать потыкать тут. На момент написания поста уже накапало 1675334308 секунд.

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

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

Можно обратиться к базе и попросить получить всех пользователей, дата регистрации которых больше
1675334308. А после получения их мы спокойно можем перевести эту числовую дату к любому формату, который нам нужен, хоть с часами, секундами и минутами (02.02.2023 14:45:10), хоть просто одна дата (02.02.2023). Такая вот интересная штука.

P.S. Для большей точности есть вариант и с миллисекундами. А одной секунде 1000 миллисекунд, а значит и число будет иметь больше чисел. Но работает так же все. Точности до секунды это в некоторых отраслях бывает недостаточно, по этому могут использовать такой вариант.