ugrás a tartalomhoz

JS date / time RegExp

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

van az alábbi kód:
  1. 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:
  1. 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
  1. function str2dt (str_datetime) {  
  2. var re_date = /^(\d+)\-(\d+)\-(\d+)\s+(\d+)\:(\d+)\:(\d+)$/;  
  3.   
  4. if (!re_date.exec(str_datetime))  
  5. return alert("Invalid Datetime format: "+ str_datetime);  
  6. return (new Date (RegExp.$1, RegExp.$2-1, RegExp.$3, RegExp.$4, RegExp.$5, RegExp.$6));  
  7. }  
  8.   
  9. function dt2dtstr (dt_datetime) {  
  10. return (new String (  
  11. dt_datetime.getFullYear()+"-"+(dt_datetime.getMonth()+1)+"-"+dt_datetime.getDate()+" "));  
  12. }  
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! ;)