Временная метка, проблема 2038 года для 64-битной системы Ubuntu

Проблема оказалась брандмауэром. Отключить его с помощью

sudo ufw disable

сделал трюк.

1
задан 18 September 2015 в 02:10

1 ответ

Не храните его как целое. Сохраните его как строку даты в формате ISO 8601. Это стандартный формат, используемый в Интернете.

9999-12-31T23:59:59+00:00
6
ответ дан 23 May 2018 в 17:23
  • 1
    Давайте все поднимем стакан к ошибке года10K! ;) Но в серьезности, хотя строки действительно расширяемы, они относительно огромны (ваш пример - 200 бит!), А синтаксический анализ и манипулирование примитивными числами - это в два раза быстрее. Это важно. – Oli♦ 18 September 2015 в 00:43
  • 2
    Это отличный формат для отображения - и только для этого. Для чего-либо еще (т. Е. Обработки данных до последнего момента, когда вы решите отформатировать его для пользователя), например, сравнение, выполнение арифметики и т. Д. Временная метка Unix как целое число (или float) намного лучше. – egmont 18 September 2015 в 00:54
  • 3
    @ Oli Это важно, если это действительно имеет значение. Это решение не сработает, если настало время, предшествующее эпохе UNIX. Формат - это стандарт, используемый для дат по всему Интернету, в протоколах и API. Если вы храните что-то в столбце MariaDB, то, действительно, так вы должны хранить его на диске. Конечно, в памяти, может быть, вы захотите сохранить его в более подходящую структуру данных. И вам не нужны последние 40 бит, если вы всегда используете UTC. – dobey 18 September 2015 в 04:16

Другие вопросы по тегам:

Похожие вопросы: