자바스크립트를 사용하여 날짜 범위가 유효한지 어떻게 확인합니까?

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 또는 Google 상세 사항은.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top