1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JavaScriptで、Date型で開始日と終了日から期間を計算し必要な日数以上かチェックする方法

Last updated at Posted at 2024-05-14

はじめに

イメージとしてはユーザーがカレンダーから何らかの期間の開始日と終了日をリクエストし、その期間が必要とする日数以上かを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

1
1
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?