omachizura

仕事メモ、役に立ったスキルをまとめています。


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;
}