这是在 JavaScript 中将日期序列化为 ISO 8601 字符串的标准方法:
var now = new Date(); console.log(now.toISOString()); // 输出“2015-12-02T21:45:22.279Z”
我只需要相同的输出,但没有毫秒。我怎样才能输出 2015-12-02T21:45:22Z
?
(new Date).toISOString().replace(/\.\d+/, "")
。
简单的方法:
console.log(new Date().toISOString().split('.')[0]+"Z");
使用 slice 删除不需要的部分
var now = new Date();
alert( now.toISOString().slice(0,-5)+"Z");
console.log( now.substring(0, now.indexOf('.'))+"Z");
因为 toISOString() 是 24 或 27 个字符长。 (在我的示例中为 now = new Date().toISOString();
)
这是解决方案:
var now = new Date();
var str = now.toISOString();
var res = str.replace(/\.[0-9]{3}/, '');
alert(res);
找到 . (点)并删除 3 个字符。
http://jsfiddle.net/boglab/wzudeyxL/7/
或者可能用这个覆盖它? (这是来自 here 的修改后的 polyfill)
function pad(number) {
if (number < 10) {
return '0' + number;
}
return number;
}
Date.prototype.toISOString = function() {
return this.getUTCFullYear() +
'-' + pad(this.getUTCMonth() + 1) +
'-' + pad(this.getUTCDate()) +
'T' + pad(this.getUTCHours()) +
':' + pad(this.getUTCMinutes()) +
':' + pad(this.getUTCSeconds()) +
'Z';
};
Date.prototype.toISOStringSansMilliseconds
或类似的东西
它类似于@STORM 的回答:
常量日期 = 新日期(); console.log(date.toISOString()); console.log(date.toISOString().replace(/[.]\d+/, ''));
/\.\d+/
也是可能的。
\.
有时可能难以阅读,所以我改用 [.]
new Date().toISOString().split('T')[0]
(new Date)
而不是丑陋的new Date()
。