2010-01-06 4 views

Répondre

16

Remplacer - par / et JavaScript peut l'analyser. erreur stupide dans la spécification JS (standard date/heure ISO est très clair que - est correct)

var str = "2010-1-10"; 
alert(Date.parse(str.replace(/-/g,"/"))); 

Essayez de le coller dans votre navigateur: javascript:alert(Date.parse("2010-01-01".replace(/-/g,"/")));

+1

Exemple de code ajouté –

+0

hey, c'est vrai! bon conseil! –

+1

Mais c'est un nombre, pas un objet. – user198729

0
Date.parse(datestring) 

Exemple; Retourne le nombre de millisecondes de Janvier 1, 1970-8 Juillet 2005: Le

var d = Date.parse("Jul 8, 2005"); 
alert(d); 
// 1120773600000 
+0

Ceci est incorrect. Date.parse ne peut pas gérer '2009-1-1'. Vous devrez remplacer '-' par'/'. –

8
var s = "2010-1-10".split('-'); 
var dateObj = new Date(Number(s[0]),Number(s[1]) -1 ,Number(s[2])) 
1
var date = new Date(); 
var str = "2010-1-10"; 
var dateArray = str.split("-") 
date.setFullYear(parseInt(dateArray[0])); 
date.setMonth(parseInt(dateArray[1])-1); // months indexed as 0-11, substract 1 
date.setDate(parseInt(dateArray[2]));  // setDate sets the month of day 
+0

fixé que pour vous –

+0

@Jan Jongboom, merci! –

0

Pour retourner un nouvel objet Date de toute ISO 8601 chaîne formatée, qui peut aller de "2010-01-10" à "2010-01-10T19: 42: 45.5-05: 00", plusieurs modèles doivent être examinés.

La seconde division (précédée d'un point décimal) et TimeZone locale offset (précédée d'un '+' ou '-') sont les trois quarts du code ici:

Date.parseISO= function(iso){ 
var z, tem, TZ, ms= 0; 
z= /:/.test(iso)? ' GMT': ''; 
ms=/(\.\d+)/.exec(iso); 
if(ms){ 
    ms= ms[1]; 
    iso= iso.replace(ms,''); 
    ms= Math.round(1000*ms); 
} 
if(z && !/Z$/.test(iso)){ 
    TZ=/:\d\d((\-|\+)(\d\d):(\d\d))$/.exec(iso); 
    if(TZ){ 
    tem= TZ[3]*60+(+TZ[4]); 
    z+= TZ[2]+tem; 
    iso= iso.replace(TZ[1],''); 
    } 
} 
iso= iso.replace(/[^\d:]/g,' ')+z; 
var stamp= Date.parse(iso); 
if(!stamp) throw iso +' Unknown date format'; 
return new Date(stamp+ms); 
} 

// obtenir une chaîne ISO à partir d'un javascript la date est plus simple si vous utilisez UTC (GMT)

Date.prototype.toISO= function(time){ 
var i=0, D= this, A= [D.getUTCFullYear(), D.getUTCMonth(), D.getUTCDate(), 
D.getUTCHours(), D.getUTCMinutes(), D.getUTCSeconds()]; 
++A[1]; 
var T= A.splice(3); 
A= A.join('-'); 
if(time){ 
    if(time==2) T.pop(); 
    while(i< T.length){ 
    if(T[i]<10) T[i]= '0'+T[i]; 
    ++i; 
    } 
    if(time==4)T[2]= T[2]+'.'+ 
    Math.round((this.getMilliseconds()/1000)*1000); 
    return A+'T'+T.join(':')+'Z'; 
} 
return A; 
} 
0
console.log(new Date('2010-01-10')); 
Questions connexes