日付差を求める時、特定単位で出力すると小数や大きな値で出力される。
例えば、日にち単位で出力すると0.12日だとか48315日など分かりづらい表記になってしまう。
日付差を分かりやすい表記にするために、単位(年月日時分秒のいずれか)を、付加して出力する。
単位は日付差の大きさにより、適切なものが選ばれる。

diffDateX関数

	/**
	 * 日数差を適切な単位(年月日時分秒のいずれか)で返す
	 * 
	 * 文字列型日付、日付オブジェクトの両方に対応
	 * 
	 * @param date1 比較日付1
	 * @param date2 比較日付2
	 * @returns number 日数
	 */
	function diffDateX(date1,date2){
		var d1 = date1;
		var d2 = date2;
		
		// 引数が文字列型の日付なら日付オブジェクトに変換
		if(typeof String(d1) === "string"){
			var d1 = new Date(d1);
		}
		if(typeof String(d2) === "string"){
			var d2 = new Date(d2);
		}
		
		var u1 = Math.floor(d1);// UNIXタイムスタンプに変換
		var u2 = Math.floor(d2);
		
		// 日数差を適切な単位(年月日時分秒のいずれか)で返すを算出
		var diff_u = u1 - u2;
		var date_str = '';
		var v = 0;
		if(diff_u >= 31556952000){
			v = Math.round(diff_u / 31556952000);
			date_str = '約' + v + '年間';
		}else if(diff_u >= 2629746000){
			v = Math.round(diff_u / 2629746000);
			date_str = '約' + v + 'ヶ月間';
		}else if(diff_u >= 86400000){
			v = Math.round(diff_u / 86400000);
			date_str = '約' + v + '日間';
		}else if(diff_u >= 3600000){
			v = Math.round(diff_u / 3600000);
			date_str = '約' + v + '時間';
		}else if(diff_u >= 60000){
			v = Math.round(diff_u / 60000);
			date_str = '約' + v + '分間';
		}else if(diff_u >= 1000){
			v = Math.round(diff_u / 1000);
			date_str = '約' + v + '秒';
		}else{
			date_str = '約' + v + 'ミリ秒';
		}
		return date_str;
	}
	



サンプル


出力

日付1日付2日付差