Date()
하나가 다른 것보다 작은 두 개의 객체가 주어지면 매일 날짜 사이에 루프를 어떻게합니까?
for(loopDate = startDate; loopDate < endDate; loopDate += 1)
{
}
이런 종류의 루프가 작동합니까? 그러나 루프 카운터에 하루를 어떻게 추가 할 수 있습니까?
감사!
답변
하루를 추가하면 필요한 경우 날짜가 다음 달로 롤오버되고 밀리 초 단위로 엉망이되는 방법을 사용하여이를 수행하는 방법이 있습니다. 일광 절약 시간도 문제가되지 않습니다.
var now = new Date();
var daysOfYear = [];
for (var d = new Date(2012, 0, 1); d <= now; d.setDate(d.getDate() + 1)) {
daysOfYear.push(new Date(d));
}
날짜를 저장하려면 위와 같이 날짜를 새로 작성해야합니다. new Date(d)
그렇지 않으면 모든 저장된 날짜가 d
루프에서 최종 값이 됩니다.
답변
Tom Gullen의 답변을 기반으로합니다.
var start = new Date("02/05/2013");
var end = new Date("02/10/2013");
var loop = new Date(start);
while(loop <= end){
alert(loop);
var newDate = loop.setDate(loop.getDate() + 1);
loop = new Date(newDate);
}
답변
startDate와 endDate가 실제로 날짜 객체 인 경우 1970 년 1 월 1 일 자정 이후 다음과 같이 밀리 초 단위로 변환 할 수 있습니다.
var startTime = startDate.getTime(), endTime = endDate.getTime();
그런 다음 1에서 다른 증분 loopTime으로 86400000 (1000 * 60 * 60 * 24)까지 루프 할 수 있습니다-하루의 밀리 초 수 :
for(loopTime = startTime; loopTime < endTime; loopTime += 86400000)
{
var loopDay=new Date(loopTime)
//use loopDay as you wish
}
답변
Moment.js 를 사용할 수 있다면 더 간단한 답변을 찾았 습니다 .
// cycle through last five days, today included
// you could also cycle through any dates you want, mostly for
// making this snippet not time aware
const currentMoment = moment().subtract(4, 'days');
const endMoment = moment().add(1, 'days');
while (currentMoment.isBefore(endMoment, 'day')) {
console.log(`Loop at ${currentMoment.format('YYYY-MM-DD')}`);
currentMoment.add(1, 'days');
}
<script src="https://cdn.jsdelivr.net/npm/moment@2/moment.min.js"></script>
답변
여기 간단한 작업 코드가 나를 위해 일했습니다.
var from = new Date(2012,0,1);
var to = new Date(2012,1,20);
// loop for every day
for (var day = from; day <= to; day.setDate(day.getDate() + 1)) {
// your day is here
}
답변
var start = new Date("2014-05-01"); //yyyy-mm-dd
var end = new Date("2014-05-05"); //yyyy-mm-dd
while(start <= end){
var mm = ((start.getMonth()+1)>=10)?(start.getMonth()+1):'0'+(start.getMonth()+1);
var dd = ((start.getDate())>=10)? (start.getDate()) : '0' + (start.getDate());
var yyyy = start.getFullYear();
var date = dd+"/"+mm+"/"+yyyy; //yyyy-mm-dd
alert(date);
start = new Date(start.setDate(start.getDate() + 1)); //date increase by 1
}
답변
Tabare의 답변을 바탕으로주기가 끝나기 때문에 마지막 날에 하루를 더 추가해야했습니다.
var start = new Date("02/05/2013");
var end = new Date("02/10/2013");
var newend = end.setDate(end.getDate()+1);
var end = new Date(newend);
while(start < end){
alert(start);
var newDate = start.setDate(start.getDate() + 1);
start = new Date(newDate);
}