LoginSignup
6
7

More than 5 years have passed since last update.

iso8601をDateオブジェクトに変換する

Last updated at Posted at 2016-10-12

JavaScriptはiso8601形式の日時表記をパースできません。

現在はできます。gaogao_9さんのコメントを参照ください。
つまりDateにiso8601を投げるだけで良かったようです。とほほ。

CMSのAPIとかで結構使われているので地味に困る。

変換ライブラリがすでにありますが、別ファイルを読み込むまでもないし、時差も考慮しないのでざっと書きました。

iso8601date.js
var iso8601Date = function(iso) {
    var parse = iso.match(/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})\+\d{2}:\d{2}/);
    return new Date( Number(parse[1]), Number(parse[2]), Number(parse[3]), Number(parse[4]), Number(parse[5]), Number(parse[6]) );
};

...

var pubdate = iso8601Date( '2016-10-12T17:47:15+09:00' );

console.log(pubdate[1]); //2016

正規表現での抽出

matchで正規表現を書く際に、条件内を括弧で囲んでいる箇所は配列として抽出できます。
これを覚えると地味に捗ります。

正規表現チェッカーをよく利用させてもらってます。
http://okumocchi.jp/php/re.php

6
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7