[자바스크립트] Date 객체
글 작성자: 망고좋아
반응형
Date 객체와 날짜
- Date 객체는 날짜를 저장할 수 있고, 날짜와 관련된 메서드도 제공해주는 내장 객체이다.
- Date 객체를 활용하여 시간과 날짜를 출력할 수 있다.
객체 생성하기
new Date()
를 호출하면 새로운Date
객체가 만들어진다.
new Date()
- 인수 없이 호출하면 현재 날짜와 시간이 저장된
Date
객체가 반환됩니다.
let now = new Date();
alert( now ); // 현재 날짜 및 시간이 출력됨
new Date(year, month, date, hours, minutes, seconds, ms)
- 주어진 인수를 조합해 만들 수 있는 날짜가 저장된 객체가 반환됩니다(지역 시간대 기준).
- 첫 번째와 두 번째 인수만 필수 값이다.
year
는 반드시 네 자리 숫자여야 합니다.month
는0
(1월)부터11
(12월) 사이의 숫자date
는 일을 나타내는데, 값이 없는 경우엔 1일로 처리된다.hours/minutes/seconds/ms
에 값이 없는 경우엔0
으로 처리된다.
let date = new Date(2011, 0, 1, 2, 3, 4, 567);
alert( date ); // 2011년 1월 1일, 02시 03분 04.567초
// 다른 시간 설정 방법
const xmas = new Date("December 25, 2021 00:00:00"); // Sat Dec 25 2021 00:00:00 GMT+0900 (대한민국 표준시)
날짜 구성요소 얻기
getFullYear() | 연도(네 자릿수)를 반환 |
getMonth() | 월을 반환(0 이상 11 이하). |
getDate() | 일을 반환(1 이상 31 이하). |
getHours() | 시 |
getMinutes() | 분 |
getSeconds() | 초 |
getMilliseconds() | 밀리초 |
getDay() | 요일 반환 일요일을 나타내는 0부터 토요일을 나타내는 6까지의 숫자 중 하나를 반환한다. |
getTime() | 주어진 일시와 1970년 1월 1일 00시 00분 00초 사이의 간격(밀리초 단위)인 타임스탬프를 반환한다. |
🔔 getYear() 말고 getFullYear()를 사용!!
- 여러 자바스크립트 엔진이 더는 사용되지 않는(deprecated) 비표준 메서드
getYear()
을 구현하고 있다. - 이 메서드는 두 자릿수 연도를 반환하는 경우가 있기 때문에 절대 사용해선 안 된다.
- 연도 정보를 얻고 싶다면
getFullYear()
를 사용하자!!!!
// 현재 일시
let date = new Date();
// 현지 시간 기준 시
alert( date.getHours() );
// 표준시간대(UTC+0, 일광 절약 시간제를 적용하지 않은 런던 시간) 기준 시
alert( date.getUTCHours() );
날짜 구성요소 설정하기
날짜 구성요소 메소드
- 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)
날짜 자동고침
- 범위를 벗어나는 값을 설정하려고 하면 자동 고침 기능이 활성화되면서 값이 자동으로 수정된다.
let date = new Date(2013, 0, 32); // 2013년 1월 32일은 없다.
alert(date); // 2013년 2월 1일이 출력된다.
- 자동 고침은 일정 시간이 지난 후의 날짜를 구하는데도 종종 사용된다.
let date = new Date();
date.setSeconds(date.getSeconds() + 70);
alert( date ); // 70초 후의 날짜가 출력됩니다.
Date 객체를 숫자로 변경해 시간차 측정하기
Date
객체를 숫자형으로 변경하면 타임스탬프(date.getTime()
을 호출 시 반환되는 값)가 됩니다.
let date = new Date();
alert(+date); // 타임스탬프(date.getTime()를 호출한 것과 동일함)
Date.now()
Date
객체를 만들지 않고도 시차를 측정할 방법이 있다.- 현재 타임스탬프를 반환하는 메서드
Date.now()
를 응용하면 된다. Date.now()
는new Date().getTime()
과 의미론적으로 동일하지만 중간에Date
객체를 만들지 않는다는 점이 다르다new Date().getTime()
를 사용하는 것보다 빠르고 가비지 컬렉터의 일을 덜어준다는 장점이 있다.
let start = Date.now(); // 1970년 1월 1일부터 현재까지의 밀리초
// 원하는 작업을 수행
for (let i = 0; i < 100000; i++) {
let doSomething = i * i * i;
}
let end = Date.now(); // done
alert( `반복문을 모두 도는데 ${end - start} 밀리초가 걸렸습니다.` ); // Date 객체가 아닌 숫자끼리 차감함
Date.parse와 문자열
- 메서드
Date.parse(str)
를 사용하면 문자열에서 날짜를 읽어올 수 있다. - 단, 문자열의 형식은
YYYY-MM-DDTHH:mm:ss.sssZ
처럼 생겨야 한다.YYYY-MM-DD
– 날짜(연-월-일)"T"
– 구분 기호로 쓰임HH:mm:ss.sss
– 시:분:초.밀리초'Z'
(옵션) –+-hh:mm
형식의 시간대를 나타냄.Z
한 글자인 경우엔 UTC+0을 나타냄
YYYY-MM-DD
,YYYY-MM
,YYYY
같이 더 짧은 문자열 형식도 가능합니다.- 문자열의 형식이 조건에 맞지 않은 경우엔
NaN
이 반환된다.
let ms = Date.parse('2012-01-26T13:51:50.417-07:00');
alert(ms); // 1327611110417 (타임스탬프)
// Date.parse(str)를 이용하면 타임스탬프만으로도 새로운 Date 객체를 바로 만들 수 있다
let date = new Date( Date.parse('2012-01-26T13:51:50.417-07:00') );
alert(date);
📌 참고
반응형
'프로그래밍 > JavaScript' 카테고리의 다른 글
[자바스크립트] 노드의 관리, appendChild(), createElement(), createAttribute() 등 (0) | 2021.07.08 |
---|---|
[자바스크립트] milliSeconds를 시/분/초로 변환하는 법 (2) | 2021.07.07 |
[자바스크립트] Math 객체 (0) | 2021.07.06 |
[자바스크립트] setInterval(), Date(), padStart(), 시/분/초 구하기 (0) | 2021.07.06 |
[자바스크립트] Map과 Set (0) | 2021.07.05 |
댓글
이 글 공유하기
다른 글
-
[자바스크립트] 노드의 관리, appendChild(), createElement(), createAttribute() 등
[자바스크립트] 노드의 관리, appendChild(), createElement(), createAttribute() 등
2021.07.08 -
[자바스크립트] milliSeconds를 시/분/초로 변환하는 법
[자바스크립트] milliSeconds를 시/분/초로 변환하는 법
2021.07.07 -
[자바스크립트] Math 객체
[자바스크립트] Math 객체
2021.07.06 -
[자바스크립트] setInterval(), Date(), padStart(), 시/분/초 구하기
[자바스크립트] setInterval(), Date(), padStart(), 시/분/초 구하기
2021.07.06