| | Виктор "Витус" Вагнер ( |
И еще о Кнуте
В процессе дискуссии по предыдущему посту, полез в Википедию смотреть дату рождения Кнута и обнаружил, что когда настанет конец эпохи, Кнуту будет ровно 100 лет и одна неделя.
| | Виктор "Витус" Вагнер ( |
January 1 2010, 09:40:17 UTC 2 years ago
January 1 2010, 11:13:51 UTC 2 years ago
Сто лет - ни фига не круглая дата. Вот если бы было 64, 128 или 256 - было бы интересно.
А как определяется конец эпохи? Я знаю, что её начало совпадает с началом 1970-го года; а конец откуда взялся?
January 1 2010, 11:46:24 UTC 2 years ago
January 1 2010, 12:26:11 UTC 2 years ago
January 1 2010, 14:40:29 UTC 2 years ago
Скажем, есть ли уверенность, что в 2038 не будут использоваться какие-нибудь нано-компьютеры ;) настолько мелкие, что 64 бита для них будет непозволительной роскошью. Вот будут они там мирно делать своё дело, невидимые глазу, а где-то внутри будет сидеть что-то вроде 'int t = time();'...
January 12 2010, 10:15:13 UTC 2 years ago
January 12 2010, 10:18:30 UTC 2 years ago
January 1 2010, 16:41:11 UTC 2 years ago
January 2 2010, 07:13:17 UTC 2 years ago
January 2 2010, 07:29:37 UTC 2 years ago
time_tспецифицирован как signed в куче мест.2. Учитывать необходимо хотя бы затем, что это представление не только для вновь образующихся логов используется. Есть и исторические данные, такие как дни рождения. Конечно, их лучше сразу в чём-то типа ISO8601 хранить, но по факту есть (остаётся, см. #1) куча мест, где
time_tприменяется для кодирования дат, произошедших ранее 1970 года. Поэтому.3. Соответственно, нужно хранить даты не в unsigned int (если уж мы unixtime храним), а в time_t.
January 2 2010, 09:03:33 UTC 2 years ago
January 2 2010, 09:08:51 UTC 2 years ago
Так и бывает.
Как быть — это совсем другой вопрос, и он не решается unsigned int'ом ну никак.
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
January 2 2010, 16:48:21 UTC 2 years ago
2 years ago
January 2 2010, 09:08:04 UTC 2 years ago
January 2 2010, 09:09:36 UTC 2 years ago
2 years ago
2 years ago
January 10 2010, 12:54:49 UTC 2 years ago
Знаковость time_t полностью того же рода, что, например, ssize_t: в отрицательной области единственное осмысленное значение - минус единица. Поэтому те, кто "time_t применяется для кодирования дат, произошедших ранее 1970 года", неправы по определению и это нужно менять вперёд прочего. Ну или не называть это словом time_t.
> Соответственно, нужно хранить даты не в unsigned int (если уж мы unixtime храним), а в time_t.
В julian days. Это наименее вредоносный из всех вариантов.
January 10 2010, 13:20:13 UTC 2 years ago
Приведите определение, плиз.
2 years ago
January 1 2010, 17:58:23 UTC 2 years ago
January 2 2010, 09:05:58 UTC 2 years ago
January 2 2010, 12:21:56 UTC 2 years ago
January 2 2010, 08:46:24 UTC 2 years ago
Потому, что uint64_t на той платформе практически невозможен.
А что мне было делать? И таких примеров миллион. Ну да вряд ли
оно до 2038 доживёт. В следующий раз я подумаю, чтоб всё что меньше
2010, и что меньше нуля, отображать на будущие даты. Сотня лет запаса будет.
January 10 2010, 12:56:38 UTC 2 years ago
January 2 2010, 08:48:08 UTC 2 years ago
January 2 2010, 14:57:46 UTC 2 years ago
January 2 2010, 09:22:56 UTC 2 years ago