date() függvény túcsordul
Üdv!
Egy olyan grafikont kell megjelenítenem ami a mai naptól a következő 40 évre tartalmaz előre adatokat havonta. Elkezdtem legenerálni a dátumokat az x tengelyhez. mktime() -ot és date()-et használok.
Viszont az időszak vége felé a következő hibaüzenetet kaptam:
A végén láthatjátok a timestampet is. Mi a megoldása a feladatnak? Ez a TimeStamp egyszerűen nem fér bele az int típusba. Windowson hiba jön, Linuxon meg átfordul. Nekem viszont meg kell jelenítenem a dátumokat.
Előre is köszönöm az ötleteket!
NP
■ Egy olyan grafikont kell megjelenítenem ami a mai naptól a következő 40 évre tartalmaz előre adatokat havonta. Elkezdtem legenerálni a dátumokat az x tengelyhez. mktime() -ot és date()-et használok.
$dateStamp = mktime(12, 0, 0, $startDate['Month'], $startDate['Day'], $startDate['Year']);
for ($idx = 0; $idx <= $monthNum; $idx++)
{
$xData[] = (float)$dateStamp;
$dateStamp += (float) date('t', $dateStamp)*24*3600;
}
for ($idx = 0; $idx <= $monthNum; $idx++)
{
$xData[] = (float)$dateStamp;
$dateStamp += (float) date('t', $dateStamp)*24*3600;
}
Viszont az időszak vége felé a következő hibaüzenetet kaptam:
Warning: date(): Windows does not support dates prior to midnight (00:00:00), January 1, 1970 in D:\Apache2\htdocs\ahbrt\ul2005\graphGen.php on line 18
float(2148631200)
float(2148631200)
A végén láthatjátok a timestampet is. Mi a megoldása a feladatnak? Ez a TimeStamp egyszerűen nem fér bele az int típusba. Windowson hiba jön, Linuxon meg átfordul. Nekem viszont meg kell jelenítenem a dátumokat.
Előre is köszönöm az ötleteket!
NP
mit vártál?
pl a hálózaton átvitt csomagokat/adatmennyiséget számoló rész is csak 4 Gb-t tud megszámolni, aztán nullázódik.
a) ne windows alatt fejlessz/futtass PHP
b) írj saját dátumkezelést és az (remélhetőleg) mindenhol működni fog.
(ha jól tudom) a legtöbb számítógépes rendszer a jelenlegi idő-bélyegeket (timestamp) 2038-ig ábrázolja, illetőleg a PHP Manual is említ olyat pl. (a date() függvénynél, hogy
Szégyellem magam...
Kösz a bejegyzést. Megoldást ugyan nem adtál, de legalább felfigyeltem a date() függvény problémájára. Egyébként mint azt megírtam Linuxon is jelentkezik a probléma, csak ott átfordul az int negatívba és ez okoz problémát.
Kicsit most elkeseredtem :(. Én hosszú távra terveztem a PHP-val foglalkozni, de a jelenlegi helyzet szerint, 2038-1-19-én - néhány nappal az 58. születésnapom előtt - "le kell tennem a lantot"?
Nem tudom miért nem kezel a date() függvény float típusú adatokat... Gobának talán van tippe!
Jelen munkámat ezexerint lehetetlen megoldani PHPben? Céges fejlesztésről van szó, tehát nem a házibulijam költségvetését akarom megtervezni. Rossz nyelvhez nyúltam? Nem szeretném ezt hinni... Tényleg nincs megoldás?
NP
Kicsit utánna jártam...
nem teljesen..
azért pár dolgot nem vettél figyelembe.
-unix timestampbek hívják, tehát nem php specialitás
-a minusz számokat is lehet kezelni
-2038-ig lesz új phpverzió
-nem kell win-t használni, pláne szerveren (bár desktopon sem szerencsés választás szvsz)
Maat
Igazad van...
A megoldást itt találtam meg: PHPLens
Újfent egy jó pont a nyílt forráskód mellett.
NP