프로그래밍/리눅스 프로그래밍

[time] Linux - UTC vs Unix Time vs Local time의 차이

jinkwon.kim 2020. 4. 28. 14:45
728x90
반응형

1.  UTC(Universal Time, Coordinated)

  1) 정의 

    - 세슘 원자 진동수 기반의 표준시, 협정 세계시

    - GMT가 조금씩 늦어지는 지구 자전의 영향을 받기 때문에 새로 재정된 표준시입니다. 

  2) UTC와 비교되는 GMT(Greenwich Mean TIme)란?

    -  GMT 런던 외곽에 있는 그리니치 천문대를 기준으로 하는 평균 태양시로, 그리니치 표준시라고 부릅니다.

       그리니치 천문대가 경도 0에 위치해 있기 때문에 이를 기준으로 한 것인데, 1925년 2월 5일부터 1972년 1월 1일

       까지 세계 표준시로 사용되었습니다.

  3) UTC와 GMT 차이점 

    - UTC와 GMT는 초의 소숫점 단위에서만 차이가 납니다.

 

2.  Unix Time (=Epoch Time)

  1) 정의

    - UTC 시간 1970년 1월 1일 00:00 부터 현재 까지의 시간을 초로 환산 한 값입니다.

    - 1970년 1월 1일 00:00 은 0 입니다.

  2) Unix Time 구하는 방법

#include <iostream>

int main()
{
	time_t unix_time = time(NULL);
    
    std::cout << unix_time << std::endl; // unix_time
}

 

3.  UTC time

  1) 정의

    - UTC기준 현재 시간

  2) UTC Time을 구하는 방법

    - gmtime_r()을 사용하여 구합니다.

#include <iostreaem> 
#include <sys/timeb.h> 
#include <time.h>

int main() {
    time_t t = time(NULL); 
    if (nullptr != gmtime_r(&t, &tstruct)) { 
        strftime(buf, sizeof(buf), "%Y-%m-%d %T", &tstruct); 
        oss << buf; // 연-월-일-시-분-초 
        std::cout << oss.str() << std::endl;
    }
    return 0;
}

 

4.  Localtime 

  1) 정의

    - UTC기준 나라 별 시간 

  2) Local Time을 구하는 방법

    - localtime_r() 을 사용하여 구합니다. 

#include <iostreaem> 
#include <sys/timeb.h> 
#include <time.h>

int main() {
    time_t t = time(NULL); 
    if (nullptr != localtime_r(&t, &tstruct)) { 
        strftime(buf, sizeof(buf), "%Y-%m-%d %T", &tstruct); 
        oss << buf; // 연-월-일-시-분-초 
        std::cout << oss.str() << std::endl;
    }
    return 0;
}

 

5. 번외

  1) Localtime_r과 gmtime_r에 대한 추가 적인 설명 

    - [Multi thread] Multi thread 에서 localtime 문제

 

참조 싸이트 

http://www.cplusplus.com/reference/ctime/gmtime/

https://graceman.tistory.com/2835075

 

728x90
반응형