2016-06-22 2 views
-2

다음과 같은 문제가 있습니다.start_date가 end_date보다 큰지 jQuery 확인

내 HTML 양식에서 start_date 및 end_date를 얻을 수 있으며 두 날짜가 모두 유효하며 부트 스트랩 날짜 선택기에 의해 입력/선택됩니다.

if (Date.parse(start_date) > Date.parse(end_date)) 
{ 
    error = true; 
    console.log('start date is greater than end date'); 
} 
else 
{ 
    console.log('start date is smaller than end date'); 
} 

시작 날짜는보다 큰 : 나는 시작 날짜가 종료 날짜보다 큰 경우 확인하려면 다음 코드를

start_date = 15-06-2016 
end_date = 14-06-2016 

을 다음과 같이

날짜의 예는 종료 날짜이지만 유효성 검사에서 항상 "시작 날짜가 종료 날짜보다 작습니다."

또한 조건문에서 다음을 시도했지만 여전히 동일한 결과가 나타납니다.

if (new Date(start_date) > new Date(end_date)) 
if (start.Date > date.Date) 

나는 "<"와 ">"로 전환하면, 난 여전히 같은 결과를 얻을 수 있습니다. 이 문은 항상 else 문을 수행합니다.

문자열에서 날짜로의 변환이 문제 일 수 있다고 생각합니다. 코드의

미리 감사드립니다

+2

날짜 형식이다() 여기에'생성자 (예 : : https://jsfiddle.net/RoryMcCrossan/4q7pdt3r/). 먼저 mm/dd/yyyy 형식으로 변경해야합니다. –

+0

'start_date' 변수와'end_date' 변수는 숫자 또는 문자열입니까? – guest271314

+0

그들은 시간을 변환하려고하는 문자열 값입니다. –

답변

1

당신은 String.prototype.split(), Array.prototype.reverse(), Array.prototype.join(), new Date()를 사용할 수 .getTime()

var start_date = "15-06-2016" 
 
, end_date = "14-06-2016"; 
 

 
function getTime(d) { 
 
    return new Date(d.split("-").reverse().join("-")).getTime() 
 
} 
 

 
console.log(getTime(start_date) > getTime(end_date))

+0

이것은 가장 짧은 코드이고 첫 번째 것은 고맙습니다! –

0

대신

start_date = 15-06-2016 
end_date = 14-06-2016 

사용

var start_date = new Date('15-06-2016'); 
var end_date = new Date('14-06-2016'); 

나머지는 동일하게 유지됩니다.

+0

답변의 맨 위에 나열된 날짜는 내가 추가 한 실제 예일뿐입니다. 양식에서, 나는'(새로운 날짜 (시작 날짜)> 새로운 날짜 (종료 날짜))'를 시도했지만 같은 결과를 얻었습니다. –

3

이 날짜 형식은 Date.parse에 의해 인식되지 않습니다.

당신이 그것을 원하는 경우

console.log(Date.parse('15-06-2016'));

당신이 mm/dd/yyyy 형식 또는 yyyy-mm-dd 형식을 사용할 필요가 인정된다.

console.log(Date.parse('06/15/2016'));

사용자 정의 형식을 사용하려는 경우, 당신은 당신의 자신의 파서를 구현 (예를 들어, '-'splitting에 의해) 또는 moment.js 같은 라이브러리를 사용해야합니다.

console.log(moment("06-15-2016", "MM-DD-YYYY"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.13.0/moment.min.js"></script>

0

첫 번째 시도 스탠드에 날짜 형식을 변환하는 예를 들어 YYYY-MM-DD과 같은 JavaScript 날짜 형식을 사용하면 Date 개체로 구문 분석 할 수 있습니다. 당신이 그것으로 완료되면, 당신은 필요한 비교 아래와 같이 수행 할 수 있습니다

표준 날짜 형식이 링크에서 찾을 수 있습니다 http://www.w3schools.com/js/js_date_formats.asp

var start_date = '15-06-2016'; 
 
var end_date = '14-06-2016'; 
 

 
//convert to standard date format like YYYY-MM-DD 
 
start_date = 
 
    start_date.split('-')[2]+"-"+start_date.split('-')[1]+"-"+start_date.split('-')[0] 
 

 
end_date = 
 
    end_date.split('-')[2]+"-"+end_date.split('-')[1]+"-"+end_date.split('-')[0] 
 

 
if (Date.parse(start_date) > Date.parse(end_date)) 
 
{ 
 
    error = true; 
 
    console.log('start date is greater than end date'); 
 
} 
 
else 
 
{ 
 
    console.log('start date is smaller than end date'); 
 
}

0

당신은 또한을 통해 이전 datesfrom 선택한 날짜를 숨길 수 있습니다 자바 스크립트.

HTML :

<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/base/jquery-ui.css" type="text/css" media="all"><label for="from">From</label> <input type="text" id="from" name="from"/> <label for="to">to</label> <input type="text" id="to" name="to"/> 

자바 스크립트 :

여기
var dateToday = new Date(); var dates = $("#from, #to").datepicker({ 
defaultDate: "+1w", 
changeMonth: true, 
numberOfMonths: 3, 
minDate: dateToday, 
onSelect: function(selectedDate) { 
    var option = this.id == "from" ? "minDate" : "maxDate", 
     instance = $(this).data("datepicker"), 
     date = $.datepicker.parseDate(instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings); 
    dates.not(this).datepicker("option", option, date); 
} }); 

당신이`날짜 제대로 읽을 수없는이 작업 Demo

관련 문제