마크업개발 메모장

Date 객체란? 본문

Javascript

Date 객체란?

parra 2015. 5. 7. 10:57

Date 객체란?


Date 객체는 날짜와 시간을 표시하는 객체이다. Date 객체를 생성하는 가장 간단한 방법은 다음과 같다.

<script>

   // 변수 선언

    var date = new Date();  // 시스템의 현재 날짜를 자동으로 지정

   

    // 출력

    alert(date);

</script>


이렇게 생성자 함수에 어떠한 매개 변수도 입력하지 않으면 현재 시간으로 초기화 된다.


코드를 실행하면 현재 시간이 출력되고 실행 위치가 한국이므로 GMT+ 0900 나 UTC + 0900의 표준 시간으로 표시된다.


브라우저에 따라 기본 설정이 GMT(Greenwich Mean Time)일 수도 있고, UTC(Universal Time Coordinated)일 수도 있다. 

GMT 시간과 UTC 시간의 시간 차이는 1초 미만이므로 크게 신경 쓰지 않아도 된다.

Date 객체의 생성자 함수는 정말 많다. 문자열을 사용해 시간을 초기화할 수도 있지만 아쉽게 한글은 입력해도 소용없다.


문자열을 사용해 Date 객체를 생성해보자.

<script>

    var date = new Date('December 9');

    var date = new Date('December 9, 1991');

    var date = new Date('December 9, 1991 02:24:23');

</script>



문자열을 입력하는 것 이외에도 매개 변수에 숫자를 연, 월, 일, 시, 분, 초, 밀리초 순서대로 입력해 Date 객체를 생성할 수 있다.


★ new Date() // 시스템의 현재 날짜를 자동으로 지정

★ new Date(년,월,일,시,분,초,1/1000초) // 특정 날짜와 시간을 지정

★ new Date(시,분,초,1/1000초) // 특정 시간을 지정

★ new Date(월,연,일,시,분: 초: 1/1000초) // 문자열로 된 날짜와 시간을 지정


이번엔 숫자를 사용해 Date 객체를 생성해보자.

<script>

    var date = new Date(1991, 12, 9);

    var date = new Date(1991, 12, 9, 2, 24, 23);

    var date = new Date(1991, 12, 9, 2, 24, 23, 1);

</script>



마지막으로 Unix Time을 사용하는 방법도 있다.

Unix Time은 1970년 1월 1일 12시 자정을 기준으로 경과한 시간을 밀리초 단위로 나타내는 방식이다.

<script>

     var date = new Date(2732741033257);

</script>







Date 객체는 정말 많은 메서드를 가진다. Date 객체의 메서드는 세 가지로 분류할 수 있는데 

우선 Date 객체는 getOO() 형태의 메서드와 setOO() 형태의 메서드를 가진다. 

get 형태의 메서드를 게터(getter)라고 부르고 set 형태의 메서드를 세터(setter)라고 부른다.


date.get                                                                                              date.set

 getDate()

 getDay()

 getFullYear()

 getHours()

 getMilliseconds()

 getMinutes()

 getSeconds()

 getTime()

 getTimezoneOffset()

 getYear()

 ...

 

 setDate()

 setFullYear()

 setHours()

 setMilliseconds()

 setMinutes()

 setMonth()

 setSeconds()

 setTime()

 setYear()

 setUTCDate()

 ...


이름만 봐도 어떤 역활을 하는 메서드인지 예상이 될것이다. 

getDate() 와 setDate() 메서드를 사용하면 일주일 후의 시간을 쉽게 구할 수 있다. 

굉장히 많이 사용하는 코드이므로 정리하고 기억하자!


일주일 후의 시간을 구해보자.

<script>

   // 변수 선언

    var date = new Date();


    // 현재 시간에서 7일을 더한다

    date.setDate(date.getDate() + 7);


    // 출력

    alert(date);

</script>




현재 2015/05/07에서 일주일 후의 시간을 출력한 결과이다.



연과 관련된 메서드 중 이름이 비슷한 getYear() 메서드의 getFullYear() 메서드가 있다.

getYear() 메서드는 브라우저에 따라 조금씩 다른 결과를 출력하므로 getFullYear() 메서드를 사용하는 것이 좋다.




게터와 세터 이외에는 Date 객체는 toOOString() 형태의 메서드도 있다.


Date 객체의 toOOString() 메서드

 toDateString()

 toGMTString()

 toISOString()

 toLocaleDateString()

 toLocaleTimeString()

 toLocaleString()

 toString()

 toTimeString()

 toUTCString()


<script>

   // 변수 생성

    var date = new Date(1991, 12, 9);


    // 출력

    var output = '';

    output += '★toDateString: ' + date.toDateString() + '\n';

    output += '★toGMTString: ' + date.toGMTString() + '\n';

    output += '★toLocaleDateString: ' + date.toLocaleDateString() + '\n';

    output += '★toLocaleString: ' + date.toLocaleString() + '\n';

    output += '★toLocaleTimeString: ' + date.toLocaleTimeString() + '\n';

    output += '★toString: ' + date.toString() + '\n';

    output += '★toTimeString: ' + date.toTimeString() + '\n';

    output += '★toUTCString: ' + date.toUTCString() + '\n';

    alert(output);

</script>








Date 객체는 D-day를 구할 때도 활용할 수 있다. 날짜 간격을 구할 때는 getTime() 함수를 사용다. 

getTime() 함수를 사용하면 1970년 1월 1일 자정부터 지난 밀리초를 구해준다. 

다음 코드는 이를 사용해 두 시간 사이의 초 간격을 구한 후 다시 날짜로 바꾸는 예제이다.

<script>

   // 변수 선언

    var now = new Date();

    var before = new Date('December 9, 1991');


    // 날짜 간격을 구한다.

    var interval = now.getTime() - before.getTime();

    interval = Math.floor(interval / (1000 * 60 * 60 * 24));


    // 출력

    alert('Interval: ' + interval + '일');

</script>





Date 객체의 프로토타입에 메서드를 넣으면 쉽고 편리하게 날자 간격을 구할 수 있다.

<script>

   // Date생성자 함수의 프로토타입에 메서드를 추가

    Date.prototype.getInterval = function (otherDate) {

        // 변수 선언

        var interval;

        // 양수로 날짜 간격을 구하려고 조건문을 사용

        if (this > otherDate) {

            interval = this.getTime() - otherDate.getTime();

        } else {

            interval = otherDate.getTime() - this.getTime();

        }

        // 리턴

        return Math.floor(interval / (1000 * 60 * 60 * 24));

    };


    // 변수 선언

    var now = new Date();

    var before = new Date('December 9, 1991');


    // 출력

    alert('Interval: ' + now.getInterval(before) + '일');

</script>






'Javascript' 카테고리의 다른 글

Math 객체란?  (0) 2015.05.09
Array 객체란?  (0) 2015.05.06
String 객체란?  (0) 2015.05.06
Number 객체란?  (0) 2015.05.06
Object 객체란?  (0) 2015.04.30