ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 30장. Date
    책/모던 자바스크립트 딥다이브 2022. 6. 12. 20:32

    30장. Date

    • UTC(Coordinated Universal Time): 국제 표준시
    • GMT(Greenwich Mean Time): 그리니치 평균시
    • KST(Korea Standard Time): 한국 표준시, UTC + 9
    • UTC와 GMT는 초의 소수점 단위에서만 차이가 나기 때문에 일상에서는 혼용되어 사용된다.
    • 기술적인 표기에는 UTC가 사용된다.
    • 현재 날짜와 시간은 JS 코드가 실행된 시스템의 시계에 의해 결정된다.

    30-1. Date 생성자 함수

    • Date 객체는 내부적으로 날짜와 시간을 나타내는 정수값을 갖는다.
    • 1970년 1월 1일 00:00:00(UTC)를 기점으로 Date 객체가 나타내는 날짜와 시간까지의 밀리초를 나타낸다.
    • 예를 들어 1970년 1월 2일0시는 정수값 86,400,000(24h * 60m * 60s * 1000ms)를 갖는다.

    new Date()

    new Date(); 
    // Sun Jun 12 2022 13:15:09 GMT+0900 (한국 표준시)
    
    Date();
    // 'Sun Jun 12 2022 13:15:28 GMT+0900 (한국 표준시)'
    
    new Date(0);
    // Thu Jan 01 1970 09:00:00 GMT+0900 (한국 표준시)
    
    new Date(86400000); 
    // Fri Jan 02 1970 09:00:00 GMT+0900 (한국 표준시)
    
    // new Date(dateString) 
    // Date.parse 메서드에 의해 해석 가능한 형식이어야 함.
    new Date('May 26, 2020 10:00:00');
    // Thu Mar 26 2020 10:00:00 GMT+0900
    
    new Date('2020/03/26/10:00:00');
    // Thu Mar 26 2020 10:00:00 GMT+0900
    

    new Date(year, month[, day, hour, minute, second, millisecond])

    • 연, 월은 반드시 지정해야함.
    • Date 객체를 반환함.
    • 지정하지 않은 옵션 정보는 0 또는 1로 초기화됨
    • month는 0부터 시작
    new Date(2022, 05);
    // Wed Jun 01 2022 00:00:00 GMT+0900 (한국 표준시)
    
    // 가독성이 더 좋음.
    new Date('2022/06/12/13:22:00:00');
    // Sun Jun 12 2022 13:22:00 GMT+0900 (한국 표준시)
    

    30-2. Date 메서드

    Date.now

    • 1970년 1월 1일 00:00:00 (UTC) 기점으로 현재 시간까지 경과한 밀리초를 숫자로 반환
    Date.now();
    // 1655007827703
    
    new Date(1655007827703);
    // Sun Jun 12 2022 13:23:47 GMT+0900 (한국 표준시)
    

    Date.parse

    • 1970년 1월 1일 00:00:00 (UTC) 기점으로 인수로 전달된 지정시간의까지의 밀리초를 숫자로 반환
    // UTC
    Date.parse('Jan 2, 1970 00:00:00 UTC'); // 86400000
    
    // KST
    Date.parse('Jan 2, 1970 09:00:00'); // 86400000
    
    // KST
    Date.parse('1970/01/02/09:00:00'); // 86400000
    

    Date.UTC

    • UTC를 기점으로 인수로 전달된 지정 시간까지의 밀리초를 숫자로 반환
    • new Date(year, month[, day, hour, minute, second, millisecond])와 같은 형식의 인수를 사용해야 한다.
    • 인수는 KST가 아닌 UTC로 인식된다.
    • month는 0부터 시작한다.
    Date.UTC(1970, 0, 2); // 86400000
    Date.UTC('1970/1/2'); // NaN
    

    year, month, date, day, hours, minutes, milliseconds, time

    // Date.prototype.setFullYear, getFullYear
    new Date('2022/06/12').getFullYear(); // 2022
    
    const today = new Date();
    today.setFullYear(2200);
    today.getFullYear(); // 2200
    
    today.setFullYear(2200, 11, 11);
    today.getFullYear(); // 2200
    
    // Date.prototype.setMonth, getMonth
    new Date('2022/06/12').getMonth(); // 5
    
    const today = new Date();
    today.setMonth(0);
    today.getMonth(); // 0
    
    today.setMonth(11, 26);
    today.getMonth(); // 11
    
    // Date.prototype.setDate, getDate
    new Date('2022/06/12').getDate(); // 12
    
    const today = new Date();
    today.setDate(1);
    today.getDate(); // 1
    
    // Date.prototype.getDay
    // 일요일 0 ~ 토요일 6
    new Date('2022/06/12').getDay(); // 0
    
    // Date.prototype.setHours, getHours
    const today = new Date();
    today.setHours(8);
    today.getHours(); // 8
    
    today.setHours(0, 0, 0, 0); // 00:00:00:00
    today.getHours(); // 0
    
    // Date.prototype.setMinutes, getMinutes
    new Date('2022/06/12/13:44').getMinutes(); // 44
    
    const today = new Date();
    today.setMinutes(50);
    today.getMinutes(); // 50
    
    today.setMinutes(10, 0); // HH:MM:10:000
    today.getMinutes(); // 10
    
    // Date.prototype.setMilliseconds, getMilliseconds
    new Date('2022/06/12/13:44:10:150').getMilliseconds(); // 150
    
    const today = new Date();
    today.setMilliseconds(123);
    today.getMilliseconds(); // 123
    
    // Date.prototype.getTime
    // UTC 기점으로 Date 객체의 시간까지 경과된 밀리초 반환
    new Date('2022/06/12/13:44').getTime(); // 1655009040000
    
    const today = new Date();
    today.setTime(86400000); // 1day
    console.log(today); // Fri Jan 02 1970 09:00:00 GMT+0900 (한국 표준시)
    

    toXXXString

    // Date.prototype.getTimezoneOffset
    // UTC와 Date객체에 지정된 locale시간과의 차이를 분 단위로 반환한다.
    const today = new Date();
    today.getTimezoneOffset(); // -540
    today.getTimezoneOffset() / 60; // -9 
    
    // Date.prototype.toDateString
    const today = new Date('2022/06/12');
    today.toString(); // 'Sun Jun 12 2022 00:00:00 GMT+0900 (한국 표준시)'
    today.toDateString(); // 'Sun Jun 12 2022'
    
    // Date.prototype.toTimeString
    const today = new Date('2022/06/12/14:04');
    today.toString(); // 'Sun Jun 12 2022 14:04:00 GMT+0900 (한국 표준시)'
    today.toTimeString(); // '14:04:00 GMT+0900 (한국 표준시)'
    
    // Date.prototype.toISOString
    // ISO 8601 형식으로 표현하여 문자열로 반환
    today.toISOString(); // '2022-06-12T05:04:00.000Z'
    today.toISOString().slice(0, 10); // '2022-06-12'
    today.toISOString().slice(0, 10).replace(/-/g, '') // 20220612
    
    // Date.prototype.toLocalString
    // 인수로 전달한 locale기준으로 표현하여 문자열로 반환
    // 인수 생략시 브라우저가 동작중인 시스템의 locale 사용
    const today = new Date('2022/06/12/14:04');
    today.toLocaleString(); // '2022. 6. 12. 오후 2:04:00'
    today.toLocaleString('ko-KR'); // '2022. 6. 12. 오후 2:04:00'
    today.toLocaleString('en-US'); // '6/12/2022, 2:04:00 PM'
    today.toLocaleString('ja-JP'); // '2022/6/12 14:04:00'
    
    // Date.prototype.toLocalTimeString
    today.toLocaleTimeString(); // '오후 2:04:00'
    today.toLocaleTimeString('ko-KR'); // '오후 2:04:00'
    today.toLocaleTimeString('en-US'); // '02:04:00 PM'
    today.toLocaleTimeString('ja-JP'); // '14:04:00'
    

    ' > 모던 자바스크립트 딥다이브' 카테고리의 다른 글

    34장. 이터러블  (2) 2022.07.08
    32장. String  (0) 2022.06.12
    29장. Math  (0) 2022.06.12
    28장. Number  (0) 2022.06.12
    37장. Set과 Map  (2) 2022.06.08
킹수빈닷컴