Post

자바스크립트: 날짜 관련 함수 + 예제(바이오리듬)

자바스크립트: 날짜 관련 함수 + 예제(바이오리듬)

기초 사용법

1
2
3
4
var today = new Date() // 명령이 실행된 현재 시각 기준으로 설정됨
var dd = today.getDate() // 일 추출, 현재 3월 15일인 경우 15 추출됨
var mm = today.getMonth() + 1 // 1월인데 0을 리턴: 밑에서 설명
var yyyy = today.getFullYear() // getYear는 호환성 문제로 deprecated되었으므로 이것을 사용, 2019를 리턴

콘솔에 포맷으로 표시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 포맷을 표시하고 싶은 경우 자체 기능을 활용하거나 위의 추출 결과를 알아서 잘 조합한다.
console.log(today)  // Sat Jan 26 2019 16:51:07 GMT+0900 (한국 표준시)
console.log(today.toLocaleDateString()) // 2019. 1. 26.
console.log(today.toDateString())   // Sat Jan 26 2019
console.log(today.toISOString())    // 2019-01-26T07:52:45.899Z
console.log("%s년 %s월 %s일", yyyy, mm, dd)    // 2019년 1월 26일
console.log("%s년 %s월 %s일", yyyy, (mm < 10 ? '0' : '') + mm, dd)    // 2019년 01월 26일

// 포맷 함수를 만들어 사용하고 싶다면 다음 사이트 참고(어려움)
// https://stove99.tistory.com/46

// 주의사항:
// 자바스크립트에서는 월을 0~11로 사용함
// 예를 들어 1월이면 0을 리턴하고 12월이면 11을 리턴함, 
// 세팅 시에도 마찬가지 1월을 의도했으면 0을 입력하고 12월을 의도했으면 11을 입력해야함
// 스트링 등으로 표시하려면 추출한 월에서 1을 더해야 함, (상식적인 월 숫자와 안맞음)

var birthday = new Date(1980, 0, 11) // 1980년 1월 11일
var currentDay = new Date(2019, 0, 25)  // 2019년 1월 25일
var betweenDays = (currentDay - birthday) / (1000 * 60 * 60 * 24) // 14259

console.log(betweenDays) // 14259

날짜 계산

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var basisDay = new Date(2020, 0, 11)
basisDay.setDate(20) // 1월 1일로부터 20일 후: 2020년 1월 20일
basisDay.setDate(-20) // 주의: 전년도 12월의 마지막 날 31에서 20을
// 뺀 값이다, 2019년 12월 11일이 결과
basisDay.setDate(0) // 마찬가지로 이건 가만히 있는게 아니고 전월인 11월의 마지막날을 구한다. 2019년 11월 30일

// 오늘 기준으로 일수 더하고 빼기
var basisToday = new Date() // 2019년 1월 26일
basisToday.setDate(basisToday.getDate() + 100) // 2019년 5월 6일
basisToday.setDate(basisToday.getDate() - 100) // 2019년 1월 26일

// 이번 달의 마지막 일이 언제인지 구하기
var basisToday = new Date() // 2019년 1월 26일
basisToday.setMonth(1) // 다음 달로 넘어가기
basisToday.setDate(0) // 0을 입력하면 전 달의 마지막 날을 구하므로 1월 31일이이 됨

var lunar = new Date(2020, 1, 2) // 주의: 실제 날짜는 2월 2일...
lunar.setMonth(1)   // 다음 달로 넘어가기
lunar.setDate(0) // 2020년 2월 29일

// 이번 달의 첫 날이 언제인지 구하기
// 당연히 1이겠지..

예제: 바이오리듬

This post is licensed under CC BY 4.0 by the author.