はじめに
イメージとしてはユーザーがカレンダーから何らかの期間の開始日と終了日をリクエストし、その期間が必要とする日数以上かをJavaScriptでチェックします。
期間の申請機能についてはこの投稿では省略します。
よく使う機能だと思ったため自身の備忘録もかねて投稿します。
コメントで @think49 さんに最適化していただいたコードがありますので、実際に開発する場合はそちらを参考にしていただいたほうがいいと思います。
完成したコード
function checkValid(start, end) {
// リクエストされた開始日と終了日を引数で受け取り変数を作成
var startDate = new Date(start);
var endDate = new Date(end);
var result = true;
// 開始と終了のタイムスタンプをgetし、(終了 - 開始)で時間差を計算する。
var diff = endDate.getTime() - startDate.getTime();
// 時間差をミリ秒単位を日単位に変換し(切り捨て)、1日分を加算。
var term = Math.floor(diff / (24 * 60 * 60 * 1000)) + 1;
// 必要な期間は1週間以上とする
if (term < 7) {
result = false;
}
return result;
}
最後に
Math.floor(diff / (24 * 60 * 60 * 1000))
上記コードの時間差をミリ秒単位に日単位に変換に関しては詳細は私自身まだ力足らずでよく理解していませんが、JavaScript Date ミリ秒などで検索するとたくさん記事がでてくると思います。
Dateオブジェクトで期間を計算する際の基本みたいです。
参考にさせていただいた記事
https://www.prj-alpha.biz/entry/2018/08/09/004451
https://tcd-theme.com/2022/06/javascript-date-object-gettime.html