我有一個包含以下格式的JavaScript字符串轉換爲日期時間
2016-07-30 00:00:01.0310000
我需要將其轉換爲datetime對象在JavaScript保留子秒的日期時間的字符串。
如果我使用
var d = new Date('2016-07-30 00:00:01.0310000');
01後,一切都將被丟棄,我怎麼能有效地實現這一目標?
我有一個包含以下格式的JavaScript字符串轉換爲日期時間
2016-07-30 00:00:01.0310000
我需要將其轉換爲datetime對象在JavaScript保留子秒的日期時間的字符串。
如果我使用
var d = new Date('2016-07-30 00:00:01.0310000');
01後,一切都將被丟棄,我怎麼能有效地實現這一目標?
你必須分析自己的字符串(這是很簡單的,唯一棘手位是在毫秒值尾隨零)並使用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
而不是一個錯誤。
謝謝!當試圖在本地運行你的代碼snippit時,我得到一個錯誤,那就是toISOString()不是方法 – user316114
@ user316114:Tsk,你需要更新你的瀏覽器。 :-)我會改變它來處理沒有'toISOString'的舊瀏覽器。 –
完美,toGMTString()工作!不幸的是我無法更新我的「瀏覽器」。我正在使用使用Rhino的插件,因此我的手受到了限制。我正在爲之後的用戶代理準備一些表示層的數據,所以我一直在與我一起工作。 – user316114
保存了毫秒(31),但之後的內容沒有保存,因爲JavaScript不支持它。
你可以使用圖書館一樣瞬間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)
你可以使用像時刻的圖書館JS – akinjide