2010-01-06 21 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')); 
相關問題