[javascript] JavaScript에서 날짜 증가

JavaScript에서 날짜 값을 하루 씩 증가시켜야합니다.

예를 들어, 날짜 값이 2010-09-11이고 다음 날의 날짜를 JavaScript 변수에 저장해야합니다.

날짜를 하루 씩 늘리려면 어떻게해야합니까?



답변

세 가지 옵션 :

1. JavaScript Date객체 만 사용 (라이브러리 없음) :

# 1에 대한 나의 이전의 대답은 틀렸다 (24 시간 추가, 일광 절약 시간으로의 전환을 설명하지 못함; 클레버 휴먼 은 동부 표준시에서 2010 년 11 월 7 일에 실패 할 것이라고 지적했다). 대신 Jigar의 답변 은 라이브러리 없이이 작업을 수행하는 올바른 방법입니다.

var tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);

JavaScript 날짜 객체는 롤오버에 대해 똑똑하기 때문에 한 달의 마지막 날에도 작동합니다.

(이 답변은 현재 승인되었으므로 삭제할 수 없습니다. 승인되기 전에 OP에 Jigar를 수락하도록 제안했지만 목록의 항목 # 2 또는 # 3에 대해이 답변을 수락했을 수도 있습니다.)

2. MomentJS 사용 :

var today = moment();
var tomorrow = moment(today).add(1, 'days');

( add새 인스턴스를 반환하지 않고 호출하는 인스턴스 를 수정하면 today.add(1, 'days')수정 today됩니다. 따라서 복제 작업을 시작합니다 var tomorrow = ....)

3. DateJS 사용 하지만 오랜 시간 동안 업데이트되지 않았습니다.

var today = new Date(); // Or Date.today()
var tomorrow = today.add(1).day();


답변

var myDate = new Date();

//add a day to the date
myDate.setDate(myDate.getDate() + 1);


답변

이 답변의 예제 중 어느 것도 일광 절약 시간 조정 요일과 작동하지 않는 것 같습니다. 그날 하루의 시간은 24 시간이 아닙니다 ( “스프링 포워드”또는 “폴백”여부에 따라 23 또는 25입니다).

아래의 AddDays 자바 스크립트 함수는 일광 절약 시간제를 설명합니다.

function addDays(date, amount) {
  var tzOff = date.getTimezoneOffset() * 60 * 1000,
      t = date.getTime(),
      d = new Date(),
      tzOff2;

  t += (1000 * 60 * 60 * 24) * amount;
  d.setTime(t);

  tzOff2 = d.getTimezoneOffset() * 60 * 1000;
  if (tzOff != tzOff2) {
    var diff = tzOff2 - tzOff;
    t += diff;
    d.setTime(t);
  }

  return d;
}

함수 테스트에 사용한 테스트는 다음과 같습니다.

    var d = new Date(2010,10,7);
    var d2 = AddDays(d, 1);
    document.write(d.toString() + "<br />" + d2.toString());

    d = new Date(2010,10,8);
    d2 = AddDays(d, -1)
    document.write("<hr /><br />" +  d.toString() + "<br />" + d2.toString());

    d = new Date('Sun Mar 27 2011 01:59:00 GMT+0100 (CET)');
    d2 = AddDays(d, 1)
    document.write("<hr /><br />" +  d.toString() + "<br />" + d2.toString());

    d = new Date('Sun Mar 28 2011 01:59:00 GMT+0100 (CET)');
    d2 = AddDays(d, -1)
    document.write("<hr /><br />" +  d.toString() + "<br />" + d2.toString());


답변

가장 쉬운 방법은 밀리 초로 변환하고 1000 * 60 * 60 * 24 밀리 초를 추가하는 것입니다. 예 :

var tomorrow = new Date(today.getTime()+1000*60*60*24);


답변

내일 순수 JS에서 한 줄에 있지만 추한 것입니다 !

new Date(new Date().setDate(new Date().getDate() + 1))

결과는 다음과 같습니다.

Thu Oct 12 2017 08:53:30 GMT+0200 (Romance Summer Time)


답변

다른 사람들의 제안을 따르기 전에 먼저 문자열을 구문 분석해야합니다.

var dateString = "2010-09-11";
var myDate = new Date(dateString);

//add a day to the date
myDate.setDate(myDate.getDate() + 1);

다시 같은 형식으로 되돌리려면 “수동으로”해야합니다.

var y = myDate.getFullYear(),
    m = myDate.getMonth() + 1, // january is month 0 in javascript
    d = myDate.getDate();
var pad = function(val) { var str = val.toString(); return (str.length < 2) ? "0" + str : str};
dateString = [y, pad(m), pad(d)].join("-");

그러나 다른 답변에서 언급 한대로 Date.js를 얻는 것이 좋습니다 . 많은 도움이 될 것 입니다.


답변

나는 .getTime()및 보다 안전한 것이 없다고 생각 .setTime()하므로 이것이 최고이며 성능도 우수해야합니다.

const d = new Date()
console.log(d.setTime(d.getTime() + 1000 * 60 * 60 * 24)) // MILLISECONDS

.setDate() 유효하지 않은 날짜 (예 : 31 + 1)는 너무 위험하며 브라우저 구현에 따라 다릅니다.