ugrás a tartalomhoz

JS date / time RegExp

DarkRaptor · 2008. Aug. 2. (Szo), 18.17
Sziasztok!

van az alábbi kód:

var re_date = /^(\d+)\-(\d+)\-(\d+)\s+(\d+)\:(\d+)\:(\d+)$/;
ez ilyen formátumot hoz létre: 2008-8-7 6:12:16



hogyan kéne ezt úgy átírni, hogy Európai típusú legyen: 2008-08-07 6:12:16 ?

ezzel próbálkoztam, de sehogy sem jön össze az idővel:

var re_date = /^\d{1,2}\/\d{1,2}\/\d{4}\s+(\d+)\:(\d+)\:(\d+)$/;
előre is köszönöm!
 
1

hajóllá tom

Fraki · 2008. Aug. 2. (Szo), 21.42
Ha jól látom, a kettő közt az a különbség, hogy az egyikben nincs vezető nulla a hónap és a nap előtt. Ezt regexppel nem lehet megcsinálni, talán félreérted a generálás metaforáját a regexp esetén. A regexp csak úgy "hoz létre", hogy bemenetet átenged. Az első regexped például átengedi a második példát is, szóval azt is "létrehozza".

Nem értem a kérdést, hogy milyen idővel mi nem jön össze.

Ha a második példát akarod átírni nap-hó-év sorrendre, akkor azt regexp-cserével meg lehet csinálni:

/(\d+)-(\d+)-(\d+)/ ---> '$3-$2-$1'

Ha a számokhoz vezető nullát kell tenni, az is megoldható:
/(d)/g ---> '0$1'
2

bocsi

DarkRaptor · 2008. Aug. 3. (V), 15.22
akkor valóban félreértettem a regExp működését. Itt az a kód, amiben változtatni kéne

function str2dt (str_datetime) {
var re_date = /^(\d+)\-(\d+)\-(\d+)\s+(\d+)\:(\d+)\:(\d+)$/;

if (!re_date.exec(str_datetime))
return alert("Invalid Datetime format: "+ str_datetime);
return (new Date (RegExp.$1, RegExp.$2-1, RegExp.$3, RegExp.$4, RegExp.$5, RegExp.$6));
}

function dt2dtstr (dt_datetime) {
return (new String (
dt_datetime.getFullYear()+"-"+(dt_datetime.getMonth()+1)+"-"+dt_datetime.getDate()+" "));
}
tehát akkor a re_date az csak egy ellenőrző rész ebben? hmm...
gondolom a RegExp.$2-1 -en kéne változtatni, de ha egy 0-át odaírok elé, hibát ír ki.
3

thx

DarkRaptor · 2008. Aug. 3. (V), 15.36
segítségeddel sikerült megoldanom! köszönöm szépen! ;)