본문 바로가기

programming study/Computer Science

기초 JS, CS 상식 - 컴퓨터 시간

본 내용은 프로그래머스의 코딩테스트 광탈 방지 A to Z : JavaScript 강의를 토대로 작성하였습니다.

컴퓨터 시간

  • 현실의 시간을 전산화

시간이란

  • 물리량
    • 시간은 물리학 관점에서 봤을 대 시각과 시각 사이 간격을 표현하는 단위를 뜻함
  • 위치
    • 시간은 위치에 따라 다르게 표현
    • 경도상 위치에 따라 다름
  • 천문 현상
    • 지구자전속도의 불규칙성, 지구의 자전주기와 공전주기 등 천문 현상으로 인한 시간 보정이 필요
  • 문화
    • 문화에 따라 시간 표현이 다를 수 있음
  • 역사
    • 역사적 사건에 의해 시간은 다르게 표현될 수 있음
  • 사회
    • 사회적 제도에 의해 시간은 변함

협정 세계시 (UTC)

  • 대부분의 국가가 협정 세계시를 기반으로 시간을 관리
  • 원자 시계와 윤초 보정을 기반으로 표준화한 시각
  • 모든 시간대는 UTC+0을 기준으로 환산
  • 표기법은 ISO 8601
    • 2022-11-26T15:30:00.000Z
    • 가운데 T는 Time을 의미하고 시간 뒤 Z는 Zulu Time을 뜻함

컴퓨터가 시간을 표현하는 방법

  • 하드웨어의 시스템 클럭을 이용
  • 특정 시간(Epoch)을 기준으로 시스템 클럭의 틱을 세는 것으로 구현
  • 이를 시스템 시간이라고 함
  • 타임 스탬프 : 시스템 시간을 값으로 표현한 것
    • 운영체제마다 기준 시간과 단위가 다를 수 있음
  • Unix Time : 유닉스 계열 운영체제에서 시간을 표시하는 방법

시스템 클럭의 원리

  • RTC(Real Time Clock)이라는 모듈 사용
    • 메인보드에 붙어있어 전원을 꺼도 계속 작동
    • 카운터 회로를 통해 클럭을 발생시킴
    • 카운터 회로의 핵심 부품인 결정 진동자가 만드는 정확한 주파수를 이용
    • 1클럭에 32.768kHz가 발생

Unix Time

  • 1970년 1월 1일 0시 0분 0초가 기준 시각
    • 유닉스를 개발한 데니스 리치가 정한 날짜
  • 1970년 이전 시간은 음수로 표현
  • 초 단위로 시간이 증가

현재 시간을 알아내는 방법

  • 시스템 시간을 네트워크 타임 프로토콜(NTP)를 통해 동기화
  • NTP 서버에 네트워크 요청을 하여 현재 시간을 받을 수 있음
  • NTP 서버는 계층으로 이루어져 있으며 그 계층을 Stratum이라고 부름
  • 최상위 계층을 PRC(Primary Reference Clock)이라고 함
  • 내려갈 수록, 정밀도는 떨어짐

UTC

  • 역사, 사회, 문화에 대한 맥락 없이 사건이 발생한 시각만을 고려할 때 사용
    • 로깅
    • 감사
    • 시계열 데이터

Time Zone이 적용된 시간

  • 역사, 사회, 문화를 고려하여 사용자가 이용한 시각을 정확히 알아야할 때 사용
  • UI에 표시되는 시간을 사용자 기준으로 보여줄 때 사용
    • 결제 시각
    • 푸시 알림 시간
    • 캘린더

JavaScript에 사용법

  • Date객체
  • moment.js는 Deprecated
  • date-fns, luxon

Reference

프로그래머스의 코딩테스트 광탈 방지 A to Z : JavaScript