Javascriptの日付について、すぐに忘れてしまうのでメモ。
「Date.parse(dateString)」で日付をミリ秒単位に直してくれるのですが、dateStringってどんな形式?と毎回忘れてます。
モダンブラウザだと、ISO8601形式を扱えます。
「YYYY-MM-DDThh:mm:ss+09:00」のようなものを基準にする感じです。
(例)2014-04-19T23:34:48+09:00
年月日は、
YYYY-MM-DD
YYYY-MM
YYYY
IE8対応だとうまくparseしてくれないので、RFC2822というの形式を利用すると、どのブラウザでも動作するみたいです。
(例)Sat Apr 19 2014 23:34:48 GMT+0900
いやー非常にややこしい。
ついでに日付で並び替えした時のソースも書いておこう。
JSONデータにdateパラメータがあるとして
//JSON [ { "date" : "April 19, 2014", "title" : "タイトル2", "desc" : "詳細テキスト2" },{ "date" : "April 20, 2014", "title" : "タイトル3", "desc" : "詳細テキスト3" },{ "date" : "April 18, 2014", "title" : "タイトル1", "desc" : "詳細テキスト1" } ]
をソートするのに
var sortJson = function(jsonData) { jsonData.sort(function(a, b){ var aDate = Date.parse(a.date); var bDate = Date.parse(b.date); //降順 if (aDate < bDate) return 1; if (aDate > bDate) return -1; return 0;// aDate=bDate }); return jsonData; }
としました。
Date.parse()については、下記で確認。
Date.parse() – JavaScript | MDN
追記:2014/06/11
Date.toLocaleDateString()も合わせて覚えておくと便利。
var date = new Date('April 18, 2014'); document.write(date.toLocaleDateString("ja-JP"));//2014年4月18日
でうまくいくはずが、2014/04/18となる場合があったので、
var date = new Date('April 18, 2014'); document.write( date.getFullYear() + '年' + (date.getMonth() + 1) + '月' + date.getDate() + '日'; );//2014年4月18日
としてあげたら、ちゃんと表示しました。