타임스탬프

타임스탬프는 1970년 1월 1일 0시 0분 0초로 지나간 시간을 초단위로 표현한 값이다. Unix Epoch Time 이라고도 부른다.

단조 시간

단조시간은 운영체제 또는 CPU 등에서 직접 계산하여 사용하는 시간으로, 실제 시간과는 다르지만 운영체제가 시작한 이후 시점부터 바뀌지 않는 특징이 있다. Monotonic Clock 이라고도 한다.

사용자가 직접 변경할 수 없는 값이지만, 재부팅 이후에는 값이 초기화 된다. 이처럼 점진적으로 증가하고 외부 요인에 의해 바뀌지 않는 단조시간의 특징을 이용하여 불변성을 보장해야하는 경우 유용하게 사용할 수 있다.

예를 들어, 어떤 작업을 1분에 한번 수행한다거나 할 경우 항상 동일한 주기로 실행이 가능하다.

실제 시간

실제 시간은 실제 사람이 고려하는 시간이다. 시스템 시간을 변경할 경우 이 시간도 변경되기 때문에, 단조 시간처럼 시간 차이를 구하거나 일정한 간격을 측정할 경우에는 사용하기 곤란하다.

단조 시간으로는 한달 주기, 또는 특정 날짜와 시간이 반드시 실행되어야하는 작업을 수행해야하는 경우 사용될 수 있다. 실제 시간은 앞서 말했듯이 사용자와 외부 요인에 의해 변경될 수 있다. 그렇기 때문에 시간 값이 예상치 못한 곳에서 바뀌어 버린다면 작업이 실행되지 않거나 끝나지 않거나, 조기에 실행되거나 종료될 수 있으니 주의해야한다.

타임존

실제 시간을 사용할 경우에는 타임존 설정을 확인해야한다. 나라마다 사용하는 표준 시간이 다르기 때문이다. 여러 국가를 대상으로 서비스 해야한다면, 타임존은 반드시 고려해야한다. 만약 타임존을 고려하지 않는다면, 원하는 작업이 일찍 시작되거나 늦게 시작될 수 있다.

<aside> 💡 UTC와 GMT 협정세계시(UTC)와 그리니치 평균시 (GMT) 두 용어가 있다. 개발자 입장에서는 두 용어가 큰 차이는 없지만, GMT는 여러 타임존 중 하나일 뿐이고, UTC는 표준 시간을 뜻하기 때문에 UTC로 표기하는게 올바르다.

</aside>