본 내용은 프로그래머스의 코딩테스트 광탈 방지 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
'programming study > Computer Science' 카테고리의 다른 글
기초 JS, CS 상식 - 네트워크 기초 (0) | 2022.11.25 |
---|---|
기초 JS, CS 상식 - 객체지향과 프로토타입 (0) | 2022.11.24 |
기초 JS, CS 상식 - 함수형 프로그래밍 (0) | 2022.11.23 |
기초 JS, CS 상식 - 암호화 기초 (0) | 2022.11.22 |
기초 JS, CS 상식 - 유니코드 (0) | 2022.11.20 |