1. ホーム
  2. ジャバスクリプト

[解決済み】JavaScriptでISO 8601形式の文字列を出力するにはどうすればいいですか?

2022-03-30 17:25:31

質問

私は Date オブジェクトを作成します。 をどのようにレンダリングすればよいのでしょうか? title の部分を教えてください。

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

他のライブラリの "relative time in words" の部分を持っています。

以下を試してみました。

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"

解決方法は?

という関数が既に存在します。 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';
    };

  }());
}

console.log(new Date().toISOString())