Date
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
* Some parts of this feature may have varying levels of support.
JavaScript Date
객체는 시간의 한 점을 플랫폼에 종속되지 않는 형태로 나타냅니다.
Date
객체는 1970년 1월 1일 UTC(협정 세계시) 자정과의 시간 차이를 밀리초로 나타내는 정수 값을 담습니다.
참고 : TC39에서 새로운 날짜/시간 API인 Temporal을 작업 중입니다. Igalia 블로그에서 더 알아보세요. 아직 프로덕션에는 적합하지 않습니다!
설명
ECMAScript 시간과 타임스탬프
JavaScript 날짜의 기반은 1970년 1월 1일 UTC 자정과의 시간 차이를 밀리초 단위로 나타낸 것으로, 날짜와 시간의 컴퓨터 기록물을 대부분 차지하고 ��는 UNIX 시간(UNIX epoch, 1970년 1월 1일 자정과의 시간 차이를 초 단위로 나타냄)과는 다릅니다.
참고:
Date
객체의 중심을 구성하는 시간 값은 UTC 기준이지만, 날짜와 시간 등 구성 요소를 가져오는 메서드는 모두 현지(호스트 시스템의 위치)의 시간대를 사용한다는 것을 기억해야 합니다.
Date
의 최대 값은 JavaScript에서의 안전한 최대 정수와 같지 않습니다.
(Number.MAX_SAFE_INTEGER
는 9,007,199,254,740,991입니다.) 대신, ECMA-262는 1970년 1월 1일 UTC에서
±100,000,000일(1억일)을 표준 Date
객체의 최대 범위로 규정하고 있습니다. 이는 기원전 271821년 4월 20일부터
서력 275760년 9월 13일까지에 해당하는 범위로, ±8,640,000,000,000,000 밀리초와 같습니다.
날짜 형식과 시간대 변환
날짜를 얻거나 시간대끼리 변환하는 메서드가 다수 존재하며, 그 중 특히 유용한 함수는 날짜 및 시간을 국제 표준 시간인 협정 세계시(UTC)로 반환하는 함수입니다. (UTC는 그리니치 시간대라고도 불리는데, 기준 시간대가 영국의 런던 인근인 그리니치를 지나는 경선이기 때문입니다.) 사용자의 장치는 현지 시간을 제공합니다.
getDay()
와 setHours()
처럼 구성 요소를 현지 시간 기준으로
읽고 쓰는 메서드에는 getUTCDay()
와 setUTCHours()
처럼
UTC를 기준으로 하는 읽기/쓰기 메서드도 존재합니다.
생성자
Date()
-
함수로 호출할 경우
new Date().toString()
과 동일하게 현재 날짜와 시간을 나타내는 문자열을 반환합니다. new Date()
-
생성자로 호출할 경우 새로운
Date
객체를 반환합니다.
정적 메서드
Date.now()
-
1970년 1월 1일 00:00:00 UTC로부터 지난 시간을 밀리초 단위의 숫자 값으로 반환합니다. 윤초는 무시합니다.
Date.parse()
-
날짜를 나타내는 문자열을 분석한 후, 해당 날짜와 1970년 1월 1일 00:00:00 UTC의 시간 차이를 밀리초 단위의 숫자 값으로 반환합니다.
참고:
Date.parse()
를 사용한 날짜 분석은 브라우저 간 차이 및 일관적이지 못한 동작을 가지고 있으므로 사용하지 않는 것이 좋습니다. Date.UTC()
-
생성자가 받을 수 있는 제일 많은 매개변수(구성요소 각각, 2개 ~ 7개)를 동일하게 받아서, 1970년 1월 1일 00:00:00 UTC의 시간 차이를 밀리초 단위의 숫자 값으로 반환합니다. 윤초는 무시합니다.
인스턴스 메서드
Date.prototype.getDate()
-
Date
에서 현지 시간 기준 일(1
–31
)을 반환합니다. Date.prototype.getDay()
-
Date
에서 현지 시간 기준 요일(0
–6
)을 반환합니다. Date.prototype.getFullYear()
-
Date
에서 현지 시간 기준 연도(네 자리 연도�� 네 자리로)를 반환합니다. Date.prototype.getHours()
-
Date
에서 현지 시간 기준 시(0
–23
)를 반환합니다. Date.prototype.getMilliseconds()
-
Date
에서 현지 시간 기준 밀리초(0
–999
)를 반환합니다. Date.prototype.getMinutes()
-
Date
에서 현지 시간 기준 분(0
–59
)을 반환합니다. Date.prototype.getMonth()
-
Date
에서 현지 시간 기준 월(0
–11
)을 반환합니다. Date.prototype.getSeconds()
-
Date
에서 현지 시간 기준 초(0
–59
)를 반환합니다. Date.prototype.getTime()
-
1970년 1월 1일 00:00:00 UTC로부터의 경과시간을 밀리초 단위로 반환합니다.
Date
가 기준 시간 이전을 나타낼 경우 음수 값을 반환합니다. Date.prototype.getTimezoneOffset()
-
현지 시간대와 UTC의 차이를 분 단위로 반환합니다.
Date.prototype.getUTCDate()
-
Date
에서 국제 시간 기준 일(1
–31
)을 반환합니다. Date.prototype.getUTCDay()
-
Date
에서 국제 시간 기준 요일(0
–6
)을 반환합니다. Date.prototype.getUTCFullYear()
-
Date
에서 국제 시간 기준 연도(네 자리 연도면 네 자리로)를 반환합니다. Date.prototype.getUTCHours()
-
Date
에서 국제 시간 기준 시(0
–23
)를 반환합니다. Date.prototype.getUTCMilliseconds()
-
Date
에서 국제 시간 기준 밀리초(0
–999
)를 반환합니다. Date.prototype.getUTCMinutes()
-
Date
에서 국제 시간 기준 분(0
–59
)을 반환합니다. Date.prototype.getUTCMonth()
-
Date
에서 국제 시간 기준 월(0
–11
)을 반환합니다. Date.prototype.getUTCSeconds()
-
Date
에서 국제 시간 기준 초(0
–59
)를 반환합니다. Date.prototype.setDate()
-
현지 시간 기준으로 일을 설정합니다.
Date.prototype.setFullYear()
-
현지 시간 기준으로 연도(네 자리 연도면 네 자리로)를 설정합니다.
Date.prototype.setHours()
-
현지 시간 기준으로 시를 설정합니다.
Date.prototype.setMilliseconds()
-
현지 시간 기준으로 밀리초를 설정합니다.
Date.prototype.setMinutes()
-
현지 시간 기준으로 분을 설정합니다.
Date.prototype.setMonth()
-
현지 시간 기준으로 월을 설정합니다.
Date.prototype.setSeconds()
-
현지 시간 기준으로 초를 설정합니다.
Date.prototype.setTime()
-
Date
가 나타낼 시간을 1970년 1월 1일 00:00:00 UTC로부터의 경과시간(밀리초)으로 설정합니다. 기준 이전의 시간은 음수 값을 사용해 설정할 수 있습니다. Date.prototype.setUTCDate()
-
국제 시간 기준으로 일을 설정합니다.
Date.prototype.setUTCFullYear()
-
국제 시간 기준으로 연도(네 자리 연도면 네 자리로)를 설정합니다.
Date.prototype.setUTCHours()
-
국제 시간 기준으로 시를 설정합니다.
Date.prototype.setUTCMilliseconds()
-
국제 시간 기준으로 밀리초를 설정합니다.
Date.prototype.setUTCMinutes()
-
국제 시간 기준으로 분을 설정합니다.
Date.prototype.setUTCMonth()
-
국제 시간 기준으로 월을 설정합니다.
Date.prototype.setUTCSeconds()
-
국제 시간 기준으로 초를 설정합니다.
Date.prototype.toDateString()
-
Date
의 날짜 부분만 나타내는, 사람이 읽을 수 있는 문자열을 반환합니다. Date.prototype.toISOString()
-
Date
를 나타내는 문자열을 ISO 8601 확장 형식에 맞춰 반환합니다. Date.prototype.toJSON()
-
toISOString()
을 사용해서Date
를 나타내는 문자열을 반환합니다.JSON.stringify()
에서 사용합니다. Date.prototype.toLocaleDateString()
-
Date
의 날짜 부분을 나타내는 문자열을 시스템에 설정된 현재 지역의 형식으로 반환합니다. Date.prototype.toLocaleFormat()
-
형식 문자열을 사용해서
Date
를 나타내는 문자열을 생성합니다. Date.prototype.toLocaleString()
-
Date
를 나타내는 문자열을 현재 지역의 형식으로 반환합니다.Object.prototype.toLocaleString()
메서드를 재정의합니다. Date.prototype.toLocaleTimeString()
-
Date
의 시간 부분을 나타내는 문자열을 시스템에 설정된 현재 지역의 형식으로 반환합니다. Date.prototype.toString()
-
Date
를 나타내는 시간 문자열을 반환합니다.Object.prototype.toString()
메서드를 재정의합니다. Date.prototype.toTimeString()
-
Date
의 시간 부분만 나타내는, 사람이 읽을 수 있는 문자열을 반환합니다. Date.prototype.toUTCString()
-
Date
를 나타내는 문자열을 UTC 기준으로 반환합니다. Date.prototype.valueOf()
-
Date
객체의 원시 값을 반환합니다.Object.prototype.valueOf()
메서드를 재정의합니다.
예제
Date 객체를 만드는 여러가지 방법
아래 예제는 JavaScript 날짜를 생성하는 몇 가지 방법을 보입니다.
참고:
Date
생성자(및 동일한 동작의Date.parse()
)를 사용한 날짜 분석은 동작이 일관적이지 못하고 브라우저끼리 차이가 존재하므로 사용하지 않는 것이 좋습니다.
let today = new Date();
let birthday = new Date("December 17, 1995 03:24:00");
let birthday = new Date("1995-12-17T03:24:00");
let birthday = new Date(1995, 11, 17); // 월은 0부터 시작
let birthday = new Date(1995, 11, 17, 3, 24, 0);
두 자리 연도는 1900년대로
Date
의 연도에 0
부터 99
까지의 정수를 제공하면 1900
부터
1999
로 처리합니다. 다른 모든 값은 그대로 사용합니다.
1900년대가 아��, 실제 0
~ 99
년을 지정해야 하면 Date.prototype.setFullYear()
와
Date.prototype.getFullYear()
메서드를 사용해야 합니다.
let date = new Date(98, 1); // Sun Feb 01 1998 00:00:00 GMT+0900 (대한민국 표준시)
// 구형 메서드: 여기서도 98을 1998로 처리
date.setYear(98); // Sun Feb 01 1998 00:00:00 GMT+0900 (대한민국 표준시)
date.setFullYear(98); // Sat Feb 01 0098 00:00:00 GMT+0827 (대한민국 표준시)
경과시간 계산
다음은 두 개의 JavaScript 날짜의 간격을 밀리초로 나타내는 예제입니다.
연, 월, 일(서머타임)의 길이가 계속해서 달라지므로, 두 시간의 간격을 시/분/초보다 큰 단위로 나타낼 땐 여러가지 문제가 생기므로 이 방법을 시도하기 전에 관련 문제를 먼저 자세히 알아보세요.
// Date 객체 사용법
let start = Date.now();
// 시간이 오래 걸리는 어떤 작업
doSomethingForALongTime();
let end = Date.now();
let elapsed = end - start; // 밀리초로 나타낸 경과시간
// 내장 메서드 사용법
let start = new Date();
// 시간이 오래 걸리는 어떤 작업
doSomethingForALongTime();
let end = new Date();
let elapsed = end.getTime() - start.getTime(); // 밀리초로 나타낸 경과시간
// 임의의 함수를 테스트하고, 호출에 걸린 시간을 출력하려면
function printElapsedTime(fTest) {
let nStartTime = Date.now(),
vReturn = fTest(),
nEndTime = Date.now();
console.log(`Elapsed time: ${String(nEndTime - nStartTime)} milliseconds`);
return vReturn;
}
let yourFunctionReturn = printElapsedTime(yourFunction);
참고: Web Performance API의 고해상도 시간 기능을 지원하는 브라우저에서는
Performance.now()
를 사용해서Date.now()
보다 더 안정적이고 정확한 경과 시간을 알아낼 수 있습니다.
ECMAScript 시간으로부터 경과한 시간을 초 단위로 가져오기
let seconds = Math.floor(Date.now() / 1000);
여기서는 정수만 반환하는 것이 중요하므로, 단순히 나누기만 해서는 충분하지 않습니다. 그리고 실제로 "지나간" 초를
반환해야 하므로 Math.round()
를 사용하지 않고 Math.floor()
를 사용합니다.
명세
Specification |
---|
ECMAScript® 2026 Language Specification # sec-date-objects |
브라우저 호환성
같이 보기
Date()
생성자