для общего развития исходя из комментария в коде "Это отодвигает проблему 2038-го года на 2106"?
Текущий UNIX-формат времени - это секунды 1 января 1970 года, и в большинстве случаев софт работает с time_t как с int32_t. Соответственно, в 38 году случиться переполнение. Далее, переход к 64-битному формату конечно решает проблему. Однако очень часто посекундная точность слишком грубая, а 64-битов достаточно для представления даже в наносекундах. Но с наносекундами (или 100-наносекунднами тиками как в Windows) часто достаточно неудобно работать... Поэтому есть несколько компромиссных вариантов, например многие хранят время в double, где за 1 принимается сутки или секунда. У "нашего" же варианта свои плюсы: целочисленность, точность и совместимость старшей части со "старым" time_t.
Обсуждают сегодня