javascriptで日付の判定・変換・加算・差分・フォーマットの処理まとめ
javascript
で日付を扱う際によく使うファンクションをまとめます。
日付の判定
ある文字列が正しい日付かどうか判定します。
//日付かどうか判定
//str:判定する文字列(yyyy-mm-dd)
function isDate (str) {
if (str.split('-').length < 3) return false;
var date = new Date(str.split('-')[0], str.split('-')[1] - 1, str.split('-')[2]);
if (str.split('-')[0] !== String(date.getFullYear()) || str.split('-')[1] !== ('0' + (date.getMonth() + 1)).slice(-2) || str.split('-')[2] !== ('0' + date.getDate()).slice(-2)) {
return false;
} else {
return true;
}
}
日付の変換
上記の日付判定でtrue
なら以下のようにして日付型に変換できます。
//日付型に変換
//str:変換する文字列(yyyy-mm-dd)
function toDate (str) {
return new Date(str.split('-')[0], str.split('-')[1] - 1, str.split('-')[2]);
}
日付の加算
日付型の変数に日数を加算してある日にちからの何日後・何日前を取得します。
//日付を加算
//date:加算する日付 days:加算する日数
function addDays (date, days) {
var date1 = toDate(date);
date1.setDate(date1.getDate() + days);
return date1;
}
日付の差分
2つの日付の差分を取得します。日にちXと日にちYが何日間あるかどうかを取得します。
//日付の差分を取得
//date1:比較する日付1 date2:比較する日付2
function getDiffDays (date1, date2) {
var timeDiff = date1.getTime() - date2.getTime();
return Math.ceil(timeDiff / (1000 * 3600 * 24));
}
日付のフォーマット
日付を文字列に変換します。
//日付をフォーマット
//date:変換する日付 format:書式
function formatDate (date, format) {
if (!format) format = 'YYYY-MM-DD'; //未指定時のデフォルト
format = format.replace(/YYYY/g, date.getFullYear());
format = format.replace(/MM/g, ('0' + (date.getMonth() + 1)).slice(-2));
format = format.replace(/DD/g, ('0' + date.getDate()).slice(-2));
return format;
}