ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JavaScript] Date 객체
    Java script 2023. 12. 8. 15:56

    Date 객체를 활용하면 생성 및 수정 시간을 저장하거나 시간을 측정할 수 있고, 현재 날짜를 출력하는 용도 등으로도 활용할 수 있다.

     

    new Date()

    인수 없이 호출하면 현재 날짜와 시간이 저장된 Date 객체가 반환

    let now = new Date();
    alert( now ); // 현재 날짜 및 시간이 출력됨

     

    new Date(year, month, date, hours, minutes, seconds, ms)

    주어진 인수를 조합해 만들 수 있는 날짜가 저장된 객체가 반환됩니다(지역 시간대 기준). 첫 번째와 두 번째 인수만 필수값이다.

    • year는 반드시 네 자리 숫자여야 합니다. 2013은 괜찮고 98은 괜찮지 않다.
    • month는 0(1월)부터 11(12월) 사이의 숫자여야 한다.
    • date는 일을 나타내는데, 값이 없는 경우엔 1일로 처리된다.
    • hours/minutes/seconds/ms에 값이 없는 경우엔 0으로 처리된다.
    new Date(2011, 0, 1, 0, 0, 0, 0); // 2011년 1월 1일, 00시 00분 00초
    new Date(2011, 0, 1); // hours를 비롯한 인수는 기본값이 0이므로 위와 동일

     

    날짜 표현 방법 '문자열'

    let date1 = new Date('12/15/1999 05:25:30');
    let date2 = new Date('December 15, 1999 05:25:30');
    let date3 = new Date('Dec 15 1999 05:25:30');

    set으로 시작하는 다양한 메서드를 활용하면, 생성된 Date객체의 정보를 수정할 수도 있다.

    (대괄호로 감싸진 요소들은 선택적인 요소)

    let myDate = new Date(2017, 4, 18, 19, 11, 16);
    
    myDate.setFullYear(2002);	//myDate의 년도를 2002로 수정 
    myDate.setMonth(6);			//myDate의 월을 6으로 수정
    myDate.setDate(20);			//myDate의 일을 20으로 설정 
    //myDate = 2002/06/20/19:11:16

    간단하게 시간정보 알아내기

    toLocaleDateString(), toLocaleTimeString(), toLocaleString() 메소드는 사용자의 브라우저에 설정된 국가의 표기에 맞춰 날짜와 시간을 알려준다.

    let myDate = new Date();
    
    console.log(myDate.toLocaleDateString()); // myDate가 가진 날짜에 대한 정보 (년. 월. 일)
    console.log(myDate.toLocaleTimeString()); // myDate가 가진 시간에 대한 정보 (시:분:초)
    console.log(myDate.toLocaleString()); // myDate가 가진 날짜와 시간에 대한 정보 (년. 월. 일 시:분:초)

    Date 자동 수정

    Date 객체엔 자동으로 날짜를 수정해주는 유용한 기능도 존재 

    범위를 벗어나는 값을 설정하려고 하면 자동으로 날짜를 수정

     

    let myDate = new Date(1988, 0, 32); // 1988년 1월 32일은 없다
    
    // 2월 1일로 자동고침 되는걸 확인할 수 있다.
    console.log(myDate) // Mon Feb 01 1988 00:00:00

    현 시점의 날짜 값 알아내기

    Date.now() 메소드는 이 메소드가 호출된 시점의 타임스탬프를 반환

    let myDate = new Date();
    
    console.log(Date.now() === myDate.getTime()); // true

    Date 객체의 형반환

    let myDate = new Date(2017, 4, 18);
    
    console.log(typeof myDate); // object
    console.log(String(myDate)); // Thu May 18 2017 00:00:00 GMT+0900 (Korean Standard Time)
    console.log(Number(myDate)); // 1495033200000
    console.log(Boolean(myDate)); // true

     

    이때 Number로 형반환을 진행하였을 때 getTime() 메소드를 활용한 것과 똑같은 수치의 타임스탬프 값을 가진다.

    Date 객체끼리 바로 사칙 연산도 가능!

    let myDate1 = new Date(2017, 4, 18);
    let myDate2 = new Date(2017, 4, 19);
    
    let timeDiff = myDate2 - myDate1;
    console.log(timeDiff); // 86400000 (ms)
    console.log(timeDiff / 1000); // 86400 (sec)
    console.log(timeDiff / 1000 / 60) // 1440 (min)
    console.log(timeDiff / 1000 / 60 / 60) // 24 (hour)
    console.log(timeDiff / 1000 / 60 / 60 / 24) // 1 (date)