2014-10-28 3 views
1

지난 며칠 동안 나는 일정 범위의 반복을하기 위해 고심하고있었습니다. 다음 코드를 사용하여 테스트하고 있습니다.자바 스크립트에서 날짜 범위를 반복하십시오.

var current_date = new Date("2014-08-01"); 
var end_date = new Date("2014-10-31"); 
var end_date_time = end_date.getTime(); 

while (current_date.getTime() <= end_date_time) { 
    document.write(current_date + '<br>'); 
    current_date.setDate(current_date.getDate()+1); 
} 

나에게 맞는 것처럼 보이지만 문제가 있습니다. 마지막 날이 그리워. 나는이 코드를 돌리고, for-loop를 사용했고, loop 내의 새로운 Date와 상상할 수있는 모든 것을 정의했다. 한 가지는 동일하게 유지되었습니다. 마지막 날!

var current_date = new Date("08/01/2014"); 
var end_date = new Date("10/31/2014"); 

을 그리고 예상대로 놀랍게도, 그것은 일 : 호기심으로

나는 날짜를 만드는 형식을 다음 사용합니다. 이제 이것이 정상적인 동작인지 또는 Date의 버그인지 궁금합니다.

누군가가 나를 계몽 할 수 있으면 감사 할 것입니다.

답변

0
처음 일 GMT 일광 절약 시간에 있고이 (GMT 표준 시간)에 지속 있는지 확인 시간에 변화가 있었기 때문에입니다

그래서 더 나은 코드는

var current_date = new Date("2014-08-01"); 
current_date = new Date(current_date.getUTCFullYear(), current_date.getUTCMonth(), current_date.getUTCDate(), current_date.getUTCHours(), current_date.getUTCMinutes(), current_date.getUTCSeconds()); 
var end_date = new Date("2014-10-31"); 
end_date = new Date(end_date.getUTCFullYear(), end_date.getUTCMonth(), end_date.getUTCDate(), end_date.getUTCHours(), end_date.getUTCMinutes(), end_date.getUTCSeconds()); 
var end_date_time = end_date.getTime(); 


while (current_date <= end_date) { 
    document.write(current_date + '<br>'); 
    current_date.setDate(current_date.getDate()+1); 
} 
+0

UTC를 사용하는 시간 변경은 날짜 기능의 변경을 의미합니까? 나는 너의 대답을 기꺼이 받아 들일 것이다. 그러나 'Y-m-d'를 사용하면서 'd/m/Y'형식으로 작업하고 실패하는 이유를 설명해 주시겠습니까? 나는 틀리지 만, 나는 까다 롭지 않다. 나는 단지 사물이 왜 그런지를 알고 싶다. – Nexo

+0

죄송합니다. 당신을 도울 수 없습니다. 나는 경험을 통해 날짜로 작업 할 때 utc로 작업하고 형식/시간대로 렌더링해야한다는 것을 배웠다. – dariogriffo

관련 문제