Language/Javascript

[Javascript] 자바스크립트 표준 객체 - Date 객체와 메소드

재은초 2023. 8. 2. 22:24
반응형

자바스크립트에서의 날짜 표현

  • 자바스크립트에서는 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

반응형