db에 저장되는 시간값은 표준시간이다. (쉽게 말해 콘솔의 저 보라색 줄..)
getDay와 같은 메소드는 서버시간 기준으로 출력을 하고 입력을 하는데
나는 이 말이 코드 짜다보면 너무 헷갈렸다.
완전히 익숙해지기 전까진, 수시로 시간을 콘솔로 출력해보고
이 글을 다시 보면서 내가 생각한대로 날짜가 처리되는지 확인을 해야겠다.
날짜를 기준으로 데이터를 처리하는 경우가 매우 빈번하고, 데이터에 따라서
하루 차이가 꽤 크게 날 수도 있기 때문이다.
let startDate = new Date(2020, 3, 15); // 3->4로되고 시간 설정을 안해서 00시인데 한국00시는 표준시간으로 15시라서 결과적으로 4월14일15시 값이 저장된다.
let endDate = new Date(2020, 5, 15);
let term = 2;
let offset = 0;
console.log(`startDate is ${startDate}, term is ${term}`); // 4월14일15시 값을 +9한 한국시간으로 출력
console.log(startDate); // 저장되있는 4월14일15시 값 츨력
if (term === 1) {
offset = 1;
} else if (term === 2) {
console.log(startDate.getMonth()); // get으로 month만 따로 출력하는건 -1한 값인 3으로 출력
console.log(new Date(startDate.getFullYear(), startDate.getMonth(), 0)); // new Date로 생성됨에 주의. getMonth가 3인데 입력될땐 3->4로 저장되는 것을 첫 줄에서 확인했다. 1일이 아니라 0일이라서 3월31일00시되고 표준으로 -9시니까 30일 15시로 값이 저장된다. (사실 생성만 되고 바로 getDate로 출력됨).아마 getDate하면 31로 나올 것
console.log((new Date(startDate.getFullYear(), startDate.getMonth(), 0)).getDate()); // 31
console.log(startDate.getMonth()); // 4월로 값이 들어가 있으니 출력은 3
console.log(startDate.getDate()); // 한국시간으로 15일
console.log(startDate.getDay()); //한국시간인 4월15일은 수요일이고, 0:일요일이라서 수요일인 3이 출력된다
startDate.setDate(startDate.getDate() - startDate.getDay());
offset = 7;
} else if (term === 3) {
startDate.setDate(1);
offset = (new Date(startDate.getFullYear(), startDate.getMonth() + 1, 0)).getDate();
}
'Skill > Node.js' 카테고리의 다른 글
범위에 따라 일별 주별 월별 기간을 반환하는 함수 - javascript (0) | 2020.06.26 |
---|---|
콜백,promise,async 이해하기 위한 최고의 글.. (0) | 2020.05.02 |