Javascript を使用して、日付範囲が有効であることを確認するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/73971

  •  09-06-2019
  •  | 
  •  

質問

JavaScript で、指定された日付が有効な範囲内にあるかどうかを判断する最良の方法は何ですか?

この例としては、ユーザーが入力したかどうかを確認することが考えられます。 requestedDate 次の有効な労働週の一部です。これは、ある日付が別の日付より大きいかどうかを確認するだけではないことに注意してください。有効な日付は、範囲の下限以上であり、範囲の上限以下であるためです。

役に立ちましたか?

解決

これは実際、私がこれまで仕事で何度も遭遇した問題であり、次のコードがこの問題に対する私の答えです。

// checkDateRange - Checks to ensure that the values entered are dates and 
//     are of a valid range. By this, the dates must be no more than the 
//     built-in number of days appart.
function checkDateRange(start, end) {
   // Parse the entries
   var startDate = Date.parse(start);
   var endDate = Date.parse(end);
   // Make sure they are valid
    if (isNaN(startDate)) {
      alert("The start date provided is not valid, please enter a valid date.");
      return false;
   }
   if (isNaN(endDate)) {
       alert("The end date provided is not valid, please enter a valid date.");
       return false;
   }
   // Check the date range, 86400000 is the number of milliseconds in one day
   var difference = (endDate - startDate) / (86400000 * 7);
   if (difference < 0) {
       alert("The start date must come before the end date.");
       return false;
   }
   if (difference <= 1) {
       alert("The range must be at least seven days apart.");
       return false;
    }
   return true;
}

このコードについて注意すべき点がいくつかあります。 Date.parse この関数はほとんどの入力タイプで機能するはずですが、「YYYY MM DD」などの一部の形式では問題があることが知られているため、使用する前にテストする必要があります。ただし、ほとんどのブラウザは、Date.parse に指定された日付文字列をコンピュータの地域設定に基づいて解釈することを思い出しました。

また、86400000 の乗数は、探している日数の範囲に応じた値にする必要があります。したがって、少なくとも 1 週間離れた日付を探している場合は、7 である必要があります。

他のヒント

したがって、現時点で理解しているのであれば、一方の日付がもう一方の日付よりも大きいかどうかを確認する必要があります。

function ValidRange(date1,date2)
{
   return date2.getTime() > date1.getTime();
}

次に、次のように Date.parse を使用して、UI から取得した文字列を解析する必要があります。

ValidRange(Date.parse('10-10-2008'),Date.parse('11-11-2008'));

それは役に立ちますか?

var myDate = new Date(2008, 9, 16);

// is myDate between Sept 1 and Sept 30?

var startDate = new Date(2008, 9, 1);
var endDate = new Date(2008, 9, 30);

if (startDate < myDate && myDate < endDate) {
    alert('yes');
    // myDate is between startDate and endDate
}

日付を構築するために Date() コンストラクターに渡すことができるさまざまな形式があります。現在の時刻を使用して新しい日付を作成することもできます。

var now = new Date();

そして、それにさまざまなプロパティを設定します。

now.setYear(...);
now.setMonth(...);
// etc

見る http://www.javascriptkit.com/jsref/date.shtml または グーグル 詳細については。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top