hhhhh:)
248
2019-05-31 11:47:07
6
593

javascript Date객체 관련해서 질문있습니다.



안녕하세요

지금 Javascript Date 객체를 이용해서 달력의 다음달 이전달, 내년, 이전년도 버튼을 누르면 해당 월과 연도에 맞는 값을 뿌려주고 있는데요


javascript에서 new Date() 객체를 이용해서 현재 날짜를 받아서

다음달을 누르면 +1 , 이전달을 누르면 -1 이런식으로 하고 있습니다.


예를들어 다음달 버튼을 누르면

function nextMonth(fromDate) { // fromDate는 new Date()로 받아온 값 입니다.

var d = fromDate;

var monthOfYear = d.getMonth();

d.setMonth(monthOfYear + 1);

return d;

}


이런식으로 하는데 문제는 5월 31일 기준으로 저 함수를 태우면 다음달은 6월이 아닌 7월로 나오고 있습니다.

이게 날짜 연산이 이상해서 그런거 같은데, 해결책을 못 찾아 질문글을 올리게 되었습니다 ㅠ

이전달 버튼을 눌러도 같은 현상이 있는 상태이구요


물론 같은 방식이기 때문에 연도 이동이나 다음날 이전날 버튼을 눌러도 같은 현상입니다.

어떻게 한국시간에 맞게끔 딱 보정을 해야 하는지 아무리 찾아봐도 잘 모르겠어서 질문글 올리게 되었습니다.

0
  • 답변 6

  • 스우
    148
    2019-05-31 12:11:40 작성 2019-05-31 12:13:06 수정됨

    6월 31일이 없어서 7월 1일로 나오는 것 같네요

  • 더미
    14k
    2019-05-31 12:30:07

    date 객체는 월계산시 0부터 시작합니다.

    0~11

  • hhhhh:)
    248
    2019-05-31 13:12:31


    더미//
    아 그건 다른데서 +1 해서 가져오고 있습니다


    스우//
    이 문제인거 같은데 흠... 어렵네요 ㅜ

  • 제르맹
    315
    2019-05-31 13:41:00

    라이브러리 사용에 대한 제약이 없다면 

    moment.js 사용을 고려해보세요.

  • 초급개발자(오)
    511
    2019-05-31 13:46:52 작성 2019-05-31 13:56:13 수정됨

    월마다 마지막 날자를 배열에 담아서요

    day={31,28,31,30,31,30,31,31,30,31,30,31};

    아...윤년체크도 해야겠네요 ㅠㅠ

    if((nowYear%4==0 &&nowYear%100!=0)||nowYear%400==0){

    day[1]=29;

    }

    해당월을 배열에 넣은뒤

    monChk=day[month-1];

    지정된 날짜와 배열에 담긴날이 같다면

    if(monChk==nowDay)

    날짜+1

    같지않다면

    if(monChk!=nowDay)

    월+1 시키면 되지 않을까요? 

  • hhhhh:)
    248
    2019-05-31 14:17:35 작성 2019-05-31 14:18:04 수정됨


    제르맹//

    해당 라이브러리를 쓰는것에는 문제가 없지만 고쳐야 할 부분들이 많고 시간이 없는 상황인지라..

    일단 해결은 한 상태입니다 감사합니다!


    초급개발자(오)//

    오 그런 방법도 있었네요 ㄷㄷ

    제가 해결한 방법은 setMonth()를 할때 인자값 바꿀 월 하나만 넣는게 아니라

    setMonth(월, 일) 이렇게 일자 까지 넣어서 일자를 강제로 1로 하는 방법으로 했습니다.

    그러면 오늘날짜인 5월 31일에서 다음달을 눌렀을 때 6월 31일을 찾는게 아니라 뒤에 일자 인자 1로 강제로 1일로 바꿔버렸기 때문에 6월 1일이 되어서 정상적으로 데이터가 나오더라구요

  • 로그인을 하시면 답변 을 등록할 수 있습니다.