반응형
자바스크립트에서의 날짜 표현
- 자바스크립트에서는 Date 객체로 시간과 날짜 정보를 얻을 수 있으며, 아래와 같은 값의 범위를 가진다.
- 연도(year) : 1900년(00) ~ 1999년(99)
- 월(month) : 1월(0) ~ 12월(11)
- 일(day) : 1일(1) ~ 31일(31)
- 시(hours) : 0시(0) ~ 23시(23)
- 분(minutes) : 0분(0) ~ 59분(59)
- 초(seconds) : 0초(0) ~ 59초(59)
- 자바스크립트에서 날짜 계산의 모든 기준은 1970년 1월 1일 00:00:00(UTC, 협정세계시)부터다.
- 자바스크립트에서 월을 나타낼 때는 1월이 0으로 표현되고 12월이 11로 표현되며, 일주일은 일요일은 0부터 시작하여 토요일은 6로 끝나고, 하루는 86,400,000 밀리초(millisecond)로 계산된다.
자바스크립트 날짜 양식(date format)
ISO 날짜 양식
- ISO 8601은 날짜와 시간을 나타내는 국제 표준 양식이다.
// T는 UTC(협정세계시)를 나타내는 문자로 시간까지 표현할 때에는 반드시 사용해야 함
YYYY-MM-DDTHH:MM:SS
YYYY-MM-DD
YYYY-MM
YYYY
new Date("1977-12-14T13:30:00"); // 날짜와 시간까지 표현
new Date("1977-12-14"); // 시간 생략시 자동으로 09:00:00으로 설정
new Date("1977-12"); // 일이 생략되면 자동으로 1일로 설정
new Date("1977"); // 월이 생략되면 자동으로 1월로 설정
Long 날짜 양식
MMM DD YYYY
DD MMM YYYY
new Date("Feb 19 1982"); // MMM DD YYYY
new Date("19 Feb 1982"); // DD MMM YYYY
new Date("February 19 1982"); // 월의 축약형 뿐만 아니라 전체 단어도 인식
new Date("FEBRUARY, 19, 1982"); // 쉼표는 무시되며 대소문자의 구분은 없음
Short 날짜 양식
- ISO 날짜 양식과 short 날짜 양식에서는 반드시 월일 순서로 날짜가 나와야 하며, 일월 순서로 나온 날짜는 자바스크립트가 제대로 인식하지 못한다.
MM/DD/YYYY
YYYY/MM/DD
new Date("02/19/1982"); // MM/DD/YYYY
new Date("1982/02/19"); // YYYY/MM/DD
Full 날짜 양식
- 자바스크립트에서 사용하는 날짜 양식으로 표현된 문자열도 날짜로 인식한다.
Wed May 25 2016 17:00:31 GMT+0900
new Date("Wed May 25 2016 17:00:00 GMT+0900 (Seoul Time)");
// GMT가 현재 국가와 다른 시간은 현재 국가의 GMT로 변환되어 표현됨
new Date("Wed May 25 2016 17:00:00 GMT-0500 (New York Time)");
Date 객체
- Date 객체는 생성자 함수로 날짜와 시간을 가지는 인스턴스를 생성한다.
- Date 객체를 생성할 때 어떠한 인수도 전달하지 않으면 현재 날짜와 시간을 가지고 Date 객체를 생성한다.
- Date 객체를 생성할 때 인수가 없으면 현재 날짜와 시간을 가리키고, 인수가 있으면 그 형태에 따라 특정 날짜와 시간을 가리키는 Date 객체를 생성한다.
/* Date 객체를 초기화하는 방법 */
1. new Date()
2. new Date("날짜를 나타내는 문자열")
3. new Date(밀리초)
4. new Date(년, 월, 일, 시, 분, 초, 밀리초)
const date = new Date();
console.log(date); // Thu May 16 2019 17:16:13 GMT+0900 (한국 표준시)
date = new Date(86400000);
console.log(date); // FFri Jan 02 1970 09:00:00 GMT+0900 (한국 표준시)
let date = new Date('May 16, 2019 17:22:10');
console.log(date); // Thu May 16 2019 17:22:10 GMT+0900 (한국 표준시)
date = new Date('2019/05/16/17:22:10');
console.log(date); // Thu May 16 2019 17:22:10 GMT+0900 (한국 표준시)
// 월을 나타내는 4는 5월을 의미한다.
// 2019/5/1/00:00:00:00
let date = new Date(2019, 4);
console.log(date); // Wed May 01 2019 00:00:00 GMT+0900 (한국 표준시)
// 2019/5/16/17:24:30:00
date = new Date(2019, 4, 16, 17, 24, 30, 0);
console.log(date); // Thu May 16 2019 17:24:30 GMT+0900 (한국 표준시)
// 가독성이 훨씬 좋다
date = new Date('2019/5/16/17:24:30:10');
console.log(date); // Thu May 16 2019 17:24:30 GMT+0900 (한국 표준시)
- Date 생성자 함수를 new 연산자없이 호출하면 인스턴스를 반환하지 않고 결과값을 문자열로 반환한다.
let date = Date();
console.log(typeof date, date); // string Thu May 16 2019 17:33:03 GMT+0900 (한국 표준시)
Date 메소드
Date.now() 메소드
- 1970년 1월 1일 0시 0분 0초부터 현재까지의 시간을 밀리초(millisecond) 단위의 정수로 반환한다.
var nowMiliSec = Date.now();
nowMiliSec; // 1970년 1월 1일 00:00:00부터 현재까지의 밀리초
new Date(nowMiliSec); // new Date()와 같은 결과를 반환함
new Date();
Date.parse() 메소드
- 1970년 1월 1일 00:00:00(UTC)을 기점으로 인수로 전달된 지정 시간까지의 밀리초를 숫자로 반환한다.
let d = Date.parse('Jan 2, 1970 00:00:00 UTC'); // UTC
console.log(d); // 86400000
d = Date.parse('Jan 2, 1970 09:00:00'); // KST
console.log(d); // 86400000
d = Date.parse('1970/01/02/09:00:00'); // KST
console.log(d); // 86400000
Date.UTC() 메소드
- 1970년 1월 1일 00:00:00(UTC)을 기점으로 인수로 전달된 지정 시간까지의 밀리초를 숫자로 반환한다.
- Date.UTC 메소드는 new Date(year, month[, day, hour, minute, second, millisecond])와 같은 형식의 인수를 사용해야 한다. Date.UTC 메소드의 인수는 local time(KST)가 아닌 UTC로 인식된다.
- month는 월을 의미하는 0~11까지의 정수이다. 0부터 시작하므로 주의가 필요하다.
let d = Date.UTC(1970, 0, 2);
console.log(d); // 86400000
d = Date.UTC('1970/1/2');
console.log(d); // NaN
Date.prototype 메소드
toDateString() 메소드
- toDateString() 메소드는 사람이 읽을 수 있는 형식의 문자열로 날짜를 반환한다.
const d = new Date('2019/5/16/18:30');
console.log(d.toString()); // Thu May 16 2019 18:30:00 GMT+0900 (한국 표준시)
console.log(d.toDateString()); // Thu May 16 2019
toTimeString() 메소드
- toTimeString() 메소드는 사람이 읽을 수 있는 형식의 문자열로 시간을 반환한다.
const d = new Date('2019/5/16/18:30');
console.log(d.toString()); // Thu May 16 2019 18:30:00 GMT+0900 (한국 표준시)
console.log(d.toTimeString()); // 18:30:00 GMT+0900 (한국 표준시)
Date.prototype getter 메소드
- 모든 Date 인스턴스는 Date.prototype으로부터 메소드와 프로퍼티를 상속받는다.
- Date.prototype getter 메소드는 날짜와 관련된 정보를 받아오기 위한 메소드다.
getFullYear() 메소드
- getFullYear() 메소드는 현재 연도를 4비트의 숫자(YYYY)로 반환한다.
var date = new Date();
document.write(date.getFullYear()); // 현재 연도 반환
getMonth() 메소드
- getMonth() 메소드는 월을 나타내는 0 ~ 11의 정수를 반환한다. 1월은 0, 12월은 11이다.
const today = new Date();
const month = today.getMonth();
console.log(today); // Thu May 16 2019 17:44:03 GMT+0900 (한국 표준시)
console.log(month); // 4
getDate() 메소드
- getDate() 메소드는 현재 날짜에 해당하는 숫자를 반환한다.
var date = new Date();
document.write(date.getMonth() + "월 " + date.getDate() + "일"); // 현재 날짜 반환
getDay() 메소드
- getDay() 메소드는 현재 요일에 해당하는 숫자를 반환한다. 일요일은 0부터 토요일은 6까지의 숫자를 반환한다.
var date = new Date();
var day;
switch (date.getDay()) { // 현재 요일 반환
case 0:
day = "일";
break;
case 1:
day = "월";
break;
...
case 6:
day = "토";
break;
}
document.write("오늘은 " + day); // 오늘은 일요일
var date = new Date();
var days = ["일", "월", "화", "수", "목", "금", "토"];
document.write("오늘은 " + days[date.getDay()] + "요일"); // 오늘은 일요일
getHours() 메소드
- getHours() 메소드는 시간(0 ~ 23)를 나타내는 정수를 반환한다.
const today = new Date();
const hours = today.getHours();
console.log(today); // Thu May 16 2019 17:48:03 GMT+0900 (한국 표준시)
console.log(hours); // 17
getMinutes() 메소드
- getMinutes() 메소드는 분(0 ~ 59)를 나타내는 정수를 반환한다.
const today = new Date();
const minutes = today.getMinutes();
console.log(today); // Thu May 16 2019 17:50:29 GMT+0900 (한국 표준시)
console.log(minutes); // 50
getSeconds() 메소드
- getSeconds() 메소드는 초(0 ~ 59)를 나타내는 정수를 반환한다.
const today = new Date();
const seconds = today.getSeconds();
console.log(today); // Thu May 16 2019 17:53:17 GMT+0900 (한국 표준시)
console.log(seconds); // 17
getMilliseconds() 메소드
- getMilliseconds() 메소드는 밀리초(0 ~ 999)를 나타내는 정수를 반환한다.
const today = new Date();
const ms = today.getMilliseconds();
console.log(today); // Thu May 16 2019 17:55:02 GMT+0900 (한국 표준시)
console.log(ms); // 905
getTime() 메소드
- getTime() 메소드는 1970년 1월 1일 0시 0분 0초부터 현재까지의 시간을 밀리초 단위로 환산한 값을 숫자로 반환하며, 소수 부분은 생략된다.
const today = new Date();
const time = today.getTime();
console.log(today); // Thu May 16 2019 17:56:08 GMT+0900 (한국 표준시)
console.log(time); // 1557996968335
getTimezoneOffset() 메소드
- UTC와 지정 로케일(Locale) 시간과의 차이를 분단위로 반환한다.
- KST(Korea Standard Time)는 UTC에 9시간을 더한 시간이다. 즉, UTC = KST - 9h이다.
const today = new Date();
const x = today.getTimezoneOffset() / 60; // -9
console.log(today); // Thu May 16 2019 17:58:13 GMT+0900 (한국 표준시)
console.log(x); // -9
Date.prototype setter 메소드
- Date.prototype setter 메소드는 날짜와 관련된 정보를 설정하기 위한 메소드다.
setFullYear() 메소드
- setFullYear() 메소드는 Date 객체의 값을 특정 날짜로 설정한다.
var date = new Date();
date.setFullYear(1982, 1, 19); // 자바스크립트에서 2월은 1임
date.getFullYear(); // 1982
date.getMonth(); // 1
date.getDate(); // 19
setMonth() 메소드
- setMonth() 메소드는 월을 나타내는 0 ~ 11의 정수를 설정한다. 1월은 0, 12월은 11이다. 월 이외 일도 설정할 수 있다.
const today = new Date();
// 월을 지정
today.setMonth(0); // 1월
let month = today.getMonth();
console.log(today); // Wed Jan 16 2019 17:45:20 GMT+0900 (한국 표준시)
console.log(month); // 0
// 월/일을 지정
today.setMonth(11, 1); // 12월 1일
month = today.getMonth();
console.log(today); // Sun Dec 01 2019 17:45:20 GMT+0900 (한국 표준시)
console.log(month); // 11
setDate() 메소드
- setDate() 메소드는 Date 객체의 일자 값을 특정 일자로 설정한다.
var date = new Date();
date.setDate(10); // Date 객체의 일자 값을 10일로 설정
document.write(date); // Sat Dec 10 2022 20:34:25 GMT+0900 (한국 표준시)
date.setDate(40); // 40일을 설정하면 초과되는 날짜만큼 다음달로 넘어감
document.write(date); // Mon Jan 09 2023 20:34:25 GMT+0900 (한국 표준시)
setHours() 메소드
- setHours() 메소드는 시간(0 ~ 23)를 나타내는 정수를 설정한다. 시간 이외 분, 초, 밀리초도 설정할 수 있다.
const today = new Date();
// 시간 지정
today.setHours(7);
let hours = today.getHours();
console.log(today); // Thu May 16 2019 07:49:06 GMT+0900 (한국 표준시)
console.log(hours); // 7
// 시간/분/초/밀리초 지정
today.setHours(0, 0, 0, 0); // 00:00:00:00
hours = today.getHours();
console.log(today); // Thu May 16 2019 00:00:00 GMT+0900 (한국 표준시)
console.log(hours); // 0
setMinutes() 메소드
- setMinutes() 메소드는 분(0 ~ 59)를 나타내는 정수를 설정한다. 분 이외 초, 밀리초도 설정할 수 있다.
const today = new Date();
// 분 지정
today.setMinutes(50);
let minutes = today.getMinutes();
console.log(today); // Thu May 16 2019 17:50:30 GMT+0900 (한국 표준시)
console.log(minutes); // 50
// 분/초/밀리초 지정
today.setMinutes(5, 10, 999); // HH:05:10:999
minutes = today.getMinutes();
console.log(today); // Thu May 16 2019 17:05:10 GMT+0900 (한국 표준시)
console.log(minutes); // 5
setSeconds() 메소드
- setSeconds() 메소드는 초(0 ~ 59)를 나타내는 정수를 설정한다. 초 이외 밀리초도 설정할 수 있다.
const today = new Date();
// 초 지정
today.setSeconds(30);
let seconds = today.getSeconds();
console.log(today); // Thu May 16 2019 17:54:30 GMT+0900 (한국 표준시)
console.log(seconds); // 30
// 초/밀리초 지정
today.setSeconds(10, 0); // HH:MM:10:000
seconds = today.getSeconds();
console.log(today); // Thu May 16 2019 17:54:10 GMT+0900 (한국 표준시)
console.log(seconds); // 10
setMilliseconds() 메소드
- setMilliseconds() 메소드는 밀리초(0 ~ 999)를 나타내는 정수를 설정한다.
const today = new Date();
// 밀리초 지정
today.setMilliseconds(123);
const ms = today.getMilliseconds();
console.log(today); // Thu May 16 2019 17:55:45 GMT+0900 (한국 표준시)
console.log(ms); // 123
setTime() 메소드
- setTime() 메소드는 1970년 1월 1일 00:00:00(UTC)를 기점으로 현재 시간까지 경과된 밀리초를 설정한다.
const today = new Date();
// 1970년 1월 1일 00:00:00(UTC)를 기점으로 현재 시간까지 경과된 밀리초 지정
today.setTime(86400000); // 86400000 === 1day
const time = today.getTime();
console.log(today); // Fri Jan 02 1970 09:00:00 GMT+0900 (한국 표준시)
console.log(time); // 86400000
Reference
반응형
'Language > JavaScript' 카테고리의 다른 글
[Javascript] 자바스크립트 표준 객체 - Array 객체와 메소드 (0) | 2023.08.02 |
---|---|
[Javascript] 자바스크립트 표준 객체 - String 객체와 메소드 (0) | 2023.08.02 |
[Javascript] 자바스크립트 표준 객체 - Math 객체와 메소드 (0) | 2023.08.02 |
[Javascript] 자바스크립트 표준 객체 - Number 객체와 메소드 (0) | 2023.08.02 |
[Javascript] 자바스크립트 객체 분류 - 네이티브, 호스트 객체 (0) | 2023.08.02 |