Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Problem roku 2038
narvego
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 6.09.2010

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
Damonsson
post
Post #2





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


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).
Go to the top of the page
+Quote Post
Pyton_000
post
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Zainteresuj się http://pl1.php.net/manual/en/class.datetime.php
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 08:37