但是這個代碼更改時間從13:00:00至08:00:00。爲什麼這是 發生。任何想法 ?或者有人給我一個想法,將我的輸入的日期從 轉換爲如上所述的期望輸出。
字符串「2017年8月17日13:00:00」是不是由ECMA-262支持的格式,所以但它是分析是完全依賴於實現的,看到Why does Date.parse give incorrect results?如果被解析到一個日期,它可能被視爲本地ISO 8601,即「2017-08-17T13:00:00」。 Safari會返回一個無效的日期,Firefox會將其解析爲本地。
所以總是避免內置的解析器。
如果你只是想重新格式化字符串,這樣做,作爲一個字符串:
var s = '2017-08-17 13:00:00';
console.log(s.replace(' ','T') + 'Z');
但是,你剛纔改變從什麼時區的日期和時間爲UTC + 0000它原來是在。如果你要考慮主機時區偏移,那麼你應該分析字符串手動日期(庫可以幫助,但不是必需的單一格式),然後用toISOString:
// Given a string in ISO 8601 like format, parse as local
function parseISOLocal(s) {
var b = s.split(/\D/);
return new Date(b[0], b[1]-1, b[2], (b[3] || 0),
(b[4] || 0), (b[5] || 0));
}
var s = '2017-08-17 13:00:00';
console.log(parseISOLocal(s).toISOString())
toISOString()方法轉換爲UTC,因此您需要將偏移量添加到您的時間 –
請您詳細說明偏移量嗎? –
是的,我寫了一個答案 –