timestamp (int) aus Datum nach 2038 mit 32bit ?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
besagten datum
bit
code
date
datum
dienstag
donnerstag
jahr
januar
minute
problem
rechnen
run
sekunde
stunden
system
tag
url
woche
zeitraum
-
Hallo
ab dem 19.1.2032 ist die Grenze von integer bei timestamp erreicht.(2147483647)
EDIT: Tippfehler .... es ist natürlich das tag/jahr">Jahr 2038 Problem (bei 32 bit signed integer)
wenn ich für ein Datum nach dem 19. Januar 2038 einen timestamp brauche
... dann habe ich ein Problem ^^
Das Datum liget im Datum-String:Format aus einem Objekt vor:
$start_timestamp = strtotime($item->StartDate);
$ender_timestamp = strtotime($item->EndDate);
sobald ein EndDate nach dem besagten Datum ist, kommt kein Integer (int) mehr dabei raus
was dann bei den folgenden Berechnungen mit diesem Wert zum Crash führt.
jemad ne Idee, wie man das Problem lösen kann?
Rechnen mit Timestamp von Datum nach 2038 ??? auf 32 Bit System ???
?!
Beitrag zuletzt geändert: 14.9.2011 12:01:32 von freecontent -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Wie kommst Du auf 2032?
Der Zeitraum zwischen den beiden Daten
Donnerstag, 1. Januar 1970 und
Samstag, 19. Januar 2030
umfaßt 21933 Tag(e).
Das sind 3133 Woche(n) und 2 Tag(e)
oder 526392 Stunden
oder 31583520 Minuten
oder 1895011200 Sekunden.
Der Zeitraum zwischen den beiden Daten
Donnerstag, 1. Januar 1970 und
Dienstag, 19. Januar 2038
umfaßt 24855 Tag(e).
Das sind 3550 Woche(n) und 5 Tag(e)
oder 596520 Stunden
oder 35791200 Minuten
oder 2147472000 Sekunden.
aber egal.
Hier ein kleiner link:
http://en.wikipedia.org/wiki/Year_2038_problem
There is no universal solution for the Year 2038 problem.
aber...
siehe Link.
Wenn Du -
Hallo
ok, hab mich verschrieben, ich meinte natürlich 2038 (werde Titel ändern)
... genau dann halt 03:14:07 UTC on Tuesday, 19 January 2038
also als Lösung steht da: run a 64 bit system .... was ich nicht hab
oder
changing time_t to an unsigned 32-bit integer, which would extend the range to the year 2106
ok, wie mache ich das?
kann man auf einem Webspace per .htaccess oder sonst irgendwie
den Wert für alle time() und date() Operationen (Funktionen) auf unsigned integer setzen?
damit ich auch mit strtotime("2042-10-28T00:00:00") einen Wert bekomme, mit dem ich rechnen kann?
....... oder andere Methode?
PS: bisher helfe ich mir so,
dass ich jedes Datum, das ab Jahr 2038 ist zurück auf 31.12.2037 setze
$endjahr = (int)substr($item->EndDate, 0, 4); // ----------- 32bit --------- if ( $endjahr >= 2038) { $item->EndDate = '2037-12-31T00:00:00'; }
das ist aber keine schöne Lösung, da das Datum ja dann nicht mehr stimmt
aber für sowas wie "gültig bis ...." ist es schon einsetzbar, da ja eh noch lange hin
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage