Pisząc jeden z importów musiałem ustawiać datę zakończenia ustawioną daleko w przyszłości. Postanowiłem z lekka zaszaleć i ustawiłem sobie datę na sto lat w przyszłość. Troszkę się zdziwiłem widząc, że wygenerowana data to ’1970-01-01 01:00:00′. Zazwyczaj gdy takie coś widzę, to pierwsza rzecz jaką sprawdzam to czy przekazany timestamp jest prawidłowy.
Okazało się, że wszystkie parametry (dla funkcji strtotime) są prawidłowe. Jedyna rzecz, która się nie zgadza to wygenerowana data.
Teraz pytanie dla Was – czy wiecie dlaczego tak się stało? Problem jest dość banalny, a wynika z tzw. Y2K38. Inaczej mówiąc w roku 2038 następuje “przekręcenie” uniksowego timestampa przez co zamiast w przyszłości lądujemy ponownie w przeszłości.
Myślę, że ta drobnostka jest warta odnotowania :)
2 Komentarze
Zdąrzymy przejść wszędzie na 64 bity, o ile przetrwamy koniec świata w 2012 ;)
… i nauczymy się do tego czasu ortografii :)