如何在ISO8601中用javascript输出日期,无需毫秒和Z
以下是在JavaScript中将日期序列化为ISO 8601字符串的标准方法:如何在ISO8601中用javascript输出日期,无需毫秒和Z,javascript,date,iso8601,Javascript,Date,Iso8601,以下是在JavaScript中将日期序列化为ISO 8601字符串的标准方法: var now = new Date(); console.log( now.toISOString() ); // outputs '2015-12-02T21:45:22.279Z' 我只需要相同的输出,但不需要毫秒。如何输出2015-12-02T21:45:22Z?简单方式: console.log( now.toISOString().split('.')[0]+"Z" ); 使用“切片”删除不需要的零件
var now = new Date();
console.log( now.toISOString() );
// outputs '2015-12-02T21:45:22.279Z'
我只需要相同的输出,但不需要毫秒。如何输出2015-12-02T21:45:22Z
?简单方式:
console.log( now.toISOString().split('.')[0]+"Z" );
使用“切片”删除不需要的零件
var now = new Date();
alert( now.toISOString().slice(0,-5)+"Z");
这就是解决方案:
var now = new Date();
var str = now.toISOString();
var res = str.replace(/\.[0-9]{3}/, '');
alert(res);
找到。(点)并删除3个字符
或者可能用这个覆盖它?(这是从中修改的polyfill)
功能板(编号){
如果(数字<10){
返回“0”+数字;
}
返回号码;
}
Date.prototype.toISOString=函数(){
返回此文件。getUTCFullYear()+
“-”+pad(this.getUTCMonth()+1)+
“-”+pad(this.getUTCDate())+
'T'+pad(this.getUTCHours())+
“:”+pad(this.getUTCMinutes())+
“:”+pad(this.getUTCSeconds())+
‘Z’;
};
您可以使用和的组合从字符串中删除毫秒数:
let date=new date().toISOString().split('.').shift()+'Z';
控制台日志(日期)代码>类似于@STORM的答案:
const date=新日期();
log(date.toISOString());
log(date.toISOString().replace(/[.]\d+/,'')代码>这不是个坏主意,但是这个人可能因为覆盖原型的危险而投了反对票!改为扩展它,并调用您的方法,例如Date.prototype.toisostringsansmilluses
或类似的方法。请永远不要更改内置方法。顺便说一句,只需稍加修改即可获得日期:new Date().toISOString().split('T')[0]
shift()
可能有点过头了,尤其是当您只是试图获取数组中的第一个值时。这只是额外的开销。这应该是公认的答案,因为它比使用split()的解决方案快10倍,比regex解决方案快3倍。唯一(未列出)的等速解决方案是now.toISOString().substr(0,19)+“Z”。当对大数据集使用这种方法时,额外的速度是很有帮助的。向上投票。@Roberto如果我想提高速度,我会使用console.log(now.substring(0,now.indexOf('.'))+“Z”)代码>因为toISOString()的长度为24或27个字符。(now=newdate().toISOString();
在我的示例中)让我惊讶的是,这实际上比使用split的解决方案要快。而且它还避免了必须添加Z.Up投票,尽管slice和substr解决方案稍好一些。
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';
};