一尘不染

如何在JavaScript中输出ISO 8601格式的字符串?

javascript

我有一个Date对象。 如何呈现title以下片段的一部分?

<abbr title="2010-04-02T14:12:07">A couple days ago</abbr>

我有另一个图书馆的“相对语言时间”部分。

我尝试了以下方法:

function isoDate(msSinceEpoch) {

   var d = new Date(msSinceEpoch);
   return d.getUTCFullYear() + '-' + (d.getUTCMonth() + 1) + '-' + d.getUTCDate() + 'T' +
          d.getUTCHours() + ':' + d.getUTCMinutes() + ':' + d.getUTCSeconds();

}

但这给了我:

"2010-4-2T3:19"

阅读 328

收藏
2020-04-25

共1个答案

一尘不染

已经有一个名为的函数toISOString()

var date = new Date();
date.toISOString(); //"2011-12-19T15:28:46.493Z"

如果您以某种方式使用了不支持它[的浏览器,那么我可以满足您的要求:

if ( !Date.prototype.toISOString ) {
  ( function() {

    function pad(number) {
      var r = String(number);
      if ( r.length === 1 ) {
        r = '0' + r;
      }
      return r;
    }

    Date.prototype.toISOString = function() {
      return this.getUTCFullYear()
        + '-' + pad( this.getUTCMonth() + 1 )
        + '-' + pad( this.getUTCDate() )
        + 'T' + pad( this.getUTCHours() )
        + ':' + pad( this.getUTCMinutes() )
        + ':' + pad( this.getUTCSeconds() )
        + '.' + String( (this.getUTCMilliseconds()/1000).toFixed(3) ).slice( 2, 5 )
        + 'Z';
    };

  }() );
}
2020-04-25