2010-01-06 94 views

回答

16

通过/更换-和JavaScript可以解析它。在JS规范愚蠢的错误(ISO日期/时间标准是很清楚,-是正确的)

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

尝试在浏览器中粘贴:javascript:alert(Date.parse("2010-01-01".replace(/-/g,"/")));

+1

添加代码示例 – 2010-01-06 14:50:38

+0

嘿,这真的很整洁!伟大的提示! – 2010-01-06 15:05:59

+1

但它是一个数字,而不是对象。 – user198729 2010-01-06 15:14:01

0
Date.parse(datestring) 

示例;返回的毫秒数从1970年1月1日至2005年7月8日:

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

这是不正确的获取ISO字符串从JavaScript日期是简单的。 Date.parse无法处理'2009-1-1'。你必须用'/'替换'-'。 – 2010-01-06 14:48:37

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

固定为雅 – 2010-01-06 14:45:54

+0

@Jan Jongboom,谢谢! – 2010-01-06 15:07:39

0

任何 ISO 8601返回一个新的Date对象格式化字符串, ,其范围可以从“2010-01-10”到“2010-01-10T19:42:45.5-05:00”, 需要查看几种模式。

的秒分(由小数点之前) 和当地时区的偏移量(通过“+”或前面“ - ”) 是代码的四分之三这里:

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

//如果您使用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')); 
相关问题