Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在ISO8601中用javascript输出日期,无需毫秒和Z_Javascript_Date_Iso8601 - Fatal编程技术网

如何在ISO8601中用javascript输出日期,无需毫秒和Z

如何在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" ); 使用“切片”删除不需要的零件

以下是在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();
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';
};