Date 객체
Date 객체와 날짜
생성 및 수정 시간 저장, 시간 측정, 현재 날짜 출력하는 용도 등 날짜/시간 관련된 용도로 활용 가능
-
객체 생성하기
new Date() 호출 시 새로운 Date 객체 만들어 짐
-
호출 형태
-
new Date()
인수 없이 호출 시 현재 날짜와 시간 저장된 Date 객체 반환
-
new Date(miliseconds)
UTC 기준 1970년 1월 1일 0분 0초에서 milliseconds 후의 시점이 저장된 Date 객체 반환
-
타임 스탬프
1970 년의 첫날을 기준으로 흘러간 밀리초를 나타내는 정수
1970 이전의 날짜에 해당하는 값은 음수
-
new Date(datestring)
인수가 하나인데 문자열 일 시 문자열 자동으로 구문 분석(parsed)
Date.parse 에서 사용하는 알고리즘
-
new Date(year, month, date, hours, minutes, seconds, ms)
주어진 인수를 조합해 만들 수 있는 날짜가 저장된 객체 반환
첫번째와 두 번째 인수만 필수값
year 은 반드시 네자리 숫자
month는 0부터 시작
date 는 값 없을 시 1로 처리
hours/minutes/seconds/ms 에 값 없을 시 0으로 처리
-
-
-
날짜 구성요소 얻기
-
getFullYear()
연도 반환
-
getMonth()
월 반환
-
getDate()
일 반환
-
getHours, getMinutes(), getSeconds(), getMilliseconds()
시, 분, 초, 밀리초 반환
-
getDay()
요일 반환
0부터 시작
0은 일요일
-
위 메서드 모두 현지 시간 기준 날짜 구성요소 반환
-
UTC
표준시 기준의 날짜 구성 요소 반환해주는 메서드
아래 두 메서드는 UTC 기준 메서드 없음
-
-
getTime()
주어진 일시에서 타임 스탬프 반환 (밀리초 단위)
-
getTimezoneOffset()
현지 시간과 표준 시간 차이(분) 반환
-
-
날짜 구성요소 설정
-
메서드
setFullYear(year, [month], [date])
setMonth(month, [date])
setDate(date)
setHours(hour, [min], [sec], [ms])
setMinutes(min, [sec], [ms])
setSeconds(sec, [ms])
setMilliseconds(ms)
setTime(milliseconds) (1970년 1월 1일 00:00:00 UTC부터 밀리초 이후를 나타내는 날짜를 설정)
-
UTC
setTime() 제외한 모든 메서드 표준시에 따라 날짜 구성 요소 설정해줌
-
setHours 와 같은 메서드의 인수에 업슨ㄴ 구성요소는 변경되지 않음
-
-
-
자동 고침
범위 벗어나는 값을 설정하려고 하면 자동 고침 기능 활성화되며 값 자동 수정
-
Date 객체 숫자로 변경해 시간차 측정
Date 객체 숫자형으로 변경 시 타임스탬프(date.getTime() 호출 시 반환하는 값) 됨
밀리초 기준 시차 구하기 가능
-
Date.now()
Date 객체 만들 지 않고 시차 측정 가능
-
new Date().getTime() 과 차이점
중간에 Date 객체 만들지 않아서 성능 더 좋음
가비지 컬렉터 일 덜어줌
-
-
벤치마크 테스트
비교 대상 두고 성능 비교하여 시험하고 평가할 때 쓰임
date.getTime() 과 마이너스 연산자 적용시 객체 숫자형으로 변환해서 비교 가능
-
벤치마크
멀티 프로세스 사용 시 벤치마크 에 CPU 자원 투입이 적을 경우 좋은 벤치마크 아님
신뢰할 수 있는 벤치마크 테스트는 번갈아 가며 여러번 돌려야 함
모던 JS 엔진은 아주 많이 실행된 코드인 ‘hot code’ 대상으로 최적화 수행
단순 비교시 최적화 잘 적용되지 않기 때문에 예열용 벤치 실행시 최적화 개선
-
세밀한 벤치 마킹
모던 JS 엔진은 최적화 많이 함
‘만들어진 테스트’ 가 ‘실제 사례’ 결과 다를 수 있음
진지하게 성능 이해 필요 시 JS 엔진 어떻게 동작하는지 공부 필요
-
-
-
Date.parse 와 문자열
문자열에서 날짜 읽어올 수 있음
문자열 형식 만족할 시 문자열과 대응하는 타임스템프 반환
조건 맞지 않을 경우 NaN 반환
Date 객체 이용해서 타임스탬프 만으로 Date 객체 만들기 가능
-
문자열 형식
YYYY-MM-DDTHH:mm:ss.sssZ 처럼 생겨야 함
-
YYYY-MM-DD – 날짜(연-월-일)
-
“T” – 구분 기호로 쓰임
-
HH:mm:ss.sss – 시:분:초.밀리초
-
‘Z’(옵션) – +-hh:mm 형식의 시간대를 나타냄. Z 한 글자인 경우엔 UTC+0을 나타냄
-
-
요약
-
Date 객체로 날짜/시간 관련된 기능들 사용 가능
-
객체 생성은 new Date() 호출
-
월은 0부터 시작
-
getDay() 로 요일 얻기 가능
-
타임 스탬프는 1970년 첫날 기준으로 흘러간 밀리초 나타내는 정수
-
new Date(datestring) 알고리즘은 Date.parse 에서 사용하는 알고리즘과 동일
-
Date 로 현지 시간 기준으로 날짜 구성요소 얻기 가능
-
날짜끼리 뺄 시 두 날짜의 밀리초 차이 반환. (Date 숫자형으로 바뀔 시 타임 스탬프 반환)
-
UTC 기준 메서드도 존재
-
Date 메서드로 날짜 구성요소 설정 가능
-
Date 메서드는 저동 고침으로 범위 벗어나는 값 설정 시 값 자동으로 수정함
-
Date.now() 로 Date 객체 만들 지 않고 시차 측정 가능하며 new Date().getTime() 보다 성능 높음
-
벤치마크 테스트는 번갈아서 최대한 많이 CPU 자원 활용해야 그나마 정확한 결과값 얻기 가능
-
모던 JS 엔진은 아주 많이 실행된 코드인 ‘hot code’ 대상으로 최적화 수행
-
Date.parse 로 문자열에서 날짜 읽을 수 있음