Javascript visszaszámláló hiba
Sziasztok!
Az egyik oldalamon van egy javascript, ami egy adott napig visszaszámol. Rendesen megy mindenen kivétel a Safari. Itt NaN -t ír ki. És hogy még bonyolultabb legyen a dolog, Erdélyből megtekintve az oldalt, minden! böngésző alatt NaN a válasz.
Hol lehet a hiba? Van valami ötlet, mi alapján keresgéljek? Valami a szerveridő eltolódással lehet kapcsolatban?
Köszi!
Zsolt
■ Az egyik oldalamon van egy javascript, ami egy adott napig visszaszámol. Rendesen megy mindenen kivétel a Safari. Itt NaN -t ír ki. És hogy még bonyolultabb legyen a dolog, Erdélyből megtekintve az oldalt, minden! böngésző alatt NaN a válasz.
Hol lehet a hiba? Van valami ötlet, mi alapján keresgéljek? Valami a szerveridő eltolódással lehet kapcsolatban?
Köszi!
Zsolt
Mivel nem tudjuk mit csinál a
NaN
azt jelenti hogy Not a Number, azaz nem szám. Valahol a számolásod közben nem szám adatot vagy adattal szorzol, osztasz, kivonsz illetve összadsz, aminek az eredménye nem szám lesz.Értem!
Ha a script oké lenne, nem
Mégiscsak segítettél.
Az adatot én "Y m d H:i:s" formában kapom Magyarországról, és ebből vonom ki a más formátumú dátumot.
var lejarat = new Date("<?php echo $lejarat; ?>"); //Y m d H:i:s
var seconds = (lejarat - now) / 1000;
Tudom, strtotime ...az segít.
Ez még mindig zavaros. Azt
Értem én, hogy nem ma
A dokumentáció szerint a Date konstruktora (ami a Date.parse()-t hívja) RFC 2822 szabványú sztringeket képes értelmezni, IE9 óta ISO 8601-et is. Minden más implementáció kérdése, tehát vagy működik, vagy nem (= ne függj tőle).
Egyik megoldás, hogy PHP-ból a megfelelő formátumban küldöd át a dátumot, van rá előre definiált formátum konstans. Vagy használsz UNIX timestampet.
A másik megoldás, hogy kliens oldalon behúzol egy Moment.js-t vagy más library-t, ami képes dátum sztringek értelmezésére.
Általános tanács: ha dátumokkal dolgozol, mindig használj valami előre megírt, általános jellegű megoldást. Egyszerű dolognak tűnik, de ahogy belemélyedsz...
Anno írtam egy scriptet az
Ezt úgy tudod megoldani, hogy vagy szerver oldalon milliszekundumra konvertálod a dátumot vagy olyan formában iratod ki amit a safari is jól kezel. A legpraktikusabb a ISO formátum.
PHP ben valahaogy így fest: