Używam 64-bitowego systemu Ubuntu.
Obecnie pracuję nad projektem, który obejmuje MariaDB. Planuję wprowadzić technikę znaczników czasu do projektu, aby ludzie otrzymali właściwy czas dla innej strefy czasowej.
Słyszałem i czytałem artykuły o problemie z datą 2038 roku. Wiele artykułów sugeruje, że używamy 64-bitowego systemu, aby kupić „nieco” więcej czasu.
Ile czasu dotyczy ten „bit”? Czy to wystarczy, abyśmy mogli zarządzać aplikacjami internetowymi do końca? Jeśli tak nie jest, to czy to tylko przedłużenie o dwa lata, więc kiedy nadejdzie rok 2040, czy będziemy mieli aplikacje, które nie będą działały odpowiednio?
time_t
liczby całkowite dadzą ci „nieco” więcej czasu - do 15:30:08 w niedzielę, 4 grudnia 292 277 026,596. Mam nadzieję, że to wystarczy na twoją aplikację;)Odpowiedzi:
Cóż, jeśli istnieje opcja dosłownego kupienia „bitu”, tj. Przeniesienia z 32-bitowej liczby całkowitej ze znakiem na 32-bitową liczbę całkowitą bez znaku, wszystko działa nadal w 2106.
Przesyłanie do wersji 64-bitowej jest „nieco lepsze”. Rozdzielczość wynosi setki miliardów lat.
Ubuntu robi to:
Jest to jednak poziom systemu operacyjnego. To, że Ubuntu używa w swoich czasach 64-bitowej liczby całkowitej, nie oznacza, że MySQL / MariaDB użyje go do przechowywania znaczników czasu. Jeśli daty po 2038 r. Są dla Ciebie ważne, rozpocznij testy natychmiast.
Właściwie mogę ci zaoszczędzić trochę czasu. Nadal jest zepsuty. Ten błąd został zgłoszony ponad dekadę temu, ale jego główny test nadal kończy się niepowodzeniem z 64-bitową int.
To nawet nie jest pamięć. To jest trochę żałosne.
(I tak, to było uruchomione na MariaDB, wersja 10.1)
źródło
W ogóle nie przechowuj go jako liczby całkowitej. Zapisz go jako ciąg daty sformatowany zgodnie z ISO 8601 . Jest to standardowy format używany w Internecie.
źródło