/** * 日数差を適切な単位(年月日時分秒のいずれか)で返す * * 文字列型日付、日付オブジェクトの両方に対応 * * @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 | 日付差 |
---|