Javascriptで日付(Date)の扱いについて

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日

としてあげたら、ちゃんと表示しました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


1 × 1 =