자바스크립트: 날짜 관련 함수 + 예제(바이오리듬)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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를 리턴
// 포맷을 표시하고 싶은 경우 자체 기능을 활용하거나 위의 추출 결과를 알아서 잘 조합한다.
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
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이겠지..
예제: 바이오리듬
전에 작업했던 자바 프로그램을 기준으로 제작하였으며(링크), 바이오리듬을 계산하려면 조회 날짜와 생년월일 사이의 날짜 계산이 필요하다. 그래프는 해당 월을 기준으로 그리므로 조회한 날이 속한 달의 마지막 날이 언제인지도 알아야 한다. 그런 것들을 종합한 예제이다.
소스는 다음 링크 참조: https://gist.github.com/ayaysir/0492c405823227d4782392fb024e3c75
This post is licensed under
CC BY 4.0
by the author.
