Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem roku 2038
Forum PHP.pl > Forum > Przedszkole
narvego
Dzień dobry,

Do roku 2038 jeszcze szmat czasu, a ten już daje się we znaki.

W skrypcie php zapisuję daty wraz z godziną w bazie danych w kolumnie DATETIME. Wszystko jest w porządku z dodawaniem dni/lat do bieżącej daty, dopóki nie przekroczy się roku 2038. Wtedy licznik jest cofany.

Bez problemu mogę wyedytować ręcznie datę w bazie danych na lata późniejsze. Błąd siedzi więc raczej w skrypcie, i wynika z zakresu liczb. Obecnie robię to tak:

  1. $timeNow = time();
  2. $timeAfter = $timeNow + $timeAdded;
  3.  
  4. $timeNow = date("Y-m-d H:i:s", $timeNow);
  5. $timeAfter = date("Y-m-d H:i:s", $timeAfter);


Zmienna "$timeAdded" to liczba dodawanych sekund na podstawie tego, co użytkownik wpisał (ile dni, albo lat dodać). TimeNow/TimeAfter lecą następnie do bazy.


Jak to przerobić (bez gmatwania, np. obiektowego), aby przy dodawaniu zbyt dużej liczby sekund licznik po roku 2038 się nie przekręcał? A może coś innego mam skopane?
Damonsson
Do tego czasu będą już wszystkie maszyny 64bit, więc problemu nie będzie. A teraz po prostu dodawaj sekundy normalnie do pełnej daty, bez pobierania żadnego time() i przekształcania na datę (co zresztą samo w sobie wg mnie jest idiotyczne, nawet bez tego problemu z 2038r).
Pyton_000
Zainteresuj się http://pl1.php.net/manual/en/class.datetime.php
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.