ugrás a tartalomhoz

date() függvény túcsordul

Nagy Péter · 2005. Jún. 7. (K), 14.19
Ü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.

$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;
}


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)

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
 
1

mit vártál?

bbalint · 2005. Jún. 7. (K), 14.29
mit vártál? májkroszoft ... abba/az nincs jól megcsinálva; így jártál stb.
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
Az időpont érvényes időpontja tipikusan 1901-12-13 20:25:54 és 2038-01-19 03:14:07 közötti időpontot jelent (Greenwich-i időpont szerint) (Ezek a dátumok a legkisebb és a legnagyobb 32-bites egész szám által reprezentált dátumok). Windows-on ez az intervallum 1970-01-01 - 2038-01-19
bbalint
2

Szégyellem magam...

Nagy Péter · 2005. Jún. 7. (K), 14.56
Szia Bálint!

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
3

Kicsit utánna jártam...

Nagy Péter · 2005. Jún. 7. (K), 15.05
Az Answers.com szerint
ez a 32 bites rendszerek általános problémája,
és csak a 64 bitre váltás fogja megoldani. Létezik ez?
4

nem teljesen..

Őry Máté · 2005. Jún. 7. (K), 15.07
hi

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
5

Igazad van...

Nagy Péter · 2005. Jún. 7. (K), 15.19
Hajlamos vagyok gyorsan elkeseredni, mivel kollégáim Javaval dolgoznak és megy a szurkálás ilyenkor.
A megoldást itt találtam meg: PHPLens

Újfent egy jó pont a nyílt forráskód mellett.

NP