2016-06-12 26 views
-1

我有一個包含以下格式的JavaScript字符串轉換爲日期時間

2016-07-30 00:00:01.0310000 

我需要將其轉換爲datetime對象在JavaScript保留子秒的日期時間的字符串。

如果我使用

var d = new Date('2016-07-30 00:00:01.0310000'); 

01後,一切都將被丟棄,我怎麼能有效地實現這一目標?

+0

你可以使用像時刻的圖書館JS – akinjide

回答

1

你必須分析自己的字符串(這是很簡單的,唯一棘手位是在毫秒值尾隨零)並使用Date(years, months, days, hours, minutes, seconds, milliseconds)構造函數構建日期。或者使用庫和格式字符串。

下面是一個例子:

var str = "2016-07-30 00:00:01.0310000"; 
 
var parts = /^\s*(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})\.(\d+)\s*$/.exec(str); 
 
var dt = !parts ? null : new Date(
 
    +parts[1],     // Years 
 
    +parts[2] - 1,    // Months (note we start with 0) 
 
    +parts[3],     // Days 
 
    +parts[4],     // Hours 
 
    +parts[5],     // Minutes 
 
    +parts[6],     // Seconds 
 
    +parts[7].replace(/0+$/, '') // Milliseconds, dropping trailing 0's 
 
); 
 
if (dt.toISOString) { 
 
    console.log(dt.toISOString()); 
 
} else { 
 
    console.log("date", dt.toString()); 
 
    console.log("milliseconds", dt.getMilliseconds()); 
 
}

在正則表達式,\d裝置 「的數字」 和{x}指 「重複x次」。

!parts ? null : new Date(...)位是如此,如果字符串不匹配的格式,我們得到null而不是一個錯誤。

+0

謝謝!當試圖在本地運行你的代碼snippit時,我得到一個錯誤,那就是toISOString()不是方法 – user316114

+0

@ user316114:Tsk,你需要更新你的瀏覽器。 :-)我會改變它來處理沒有'toISOString'的舊瀏覽器。 –

+0

完美,toGMTString()工作!不幸的是我無法更新我的「瀏覽器」。我正在使用使用Rhino的插件,因此我的手受到了限制。我正在爲之後的用戶代理準備一些表示層的數據,所以我一直在與我一起工作。 – user316114

-1

保存了毫秒(31),但之後的內容沒有保存,因爲JavaScript不支持它。

-1

你可以使用圖書館一樣瞬間JS,你可以閱讀更多http://momentjs.com/docs/

var day = moment("2016-07-30 00:00:01.0310000"); 

console.log(day._d); // Sat Jul 30 2016 00:00:01 GMT+0100 (WAT) 
相關問題