tm 에서 time_t로 UTC로 변환 하는 함수
헤더 파일 time.h 혹은 헤더 파일 ctime 에서 time_t와 tm 구조체와의 변환을 하는 함수를 정리했다.
time_t→ tm 구조체 | tm 구조체 → time_t | |
---|---|---|
현지 시각 | localtime | mktime |
UTC | gmtime | ? |
표의 “?” 부분은 UTC로 tm 구조체에서 time_t로 변환하는 함수가 C 및 C++ 표준 라이브러리에 없다.
어쩔 수 없이 비표준이라도 좋으니 없는지 찾았보았다.
Unix 계열의 일부에는 timegm, Visual C++에는 _mkgmtime 라는 함수가 나타났다.
- Linux glibc, BSD계열, Cygwin 등
- timegm 함수(Linux, FreeBSD)
- Visual C++
- _mkgmtime
이 밖에 Linux의 man에는 Unix계에서 일반적으로 통용될 듯한 방법이 설명되어 있다. setenv에서 환경 변수 TZ을 설정하고 mktime을 호출하는 방식이다.
또 std::chrono::system_clock::time_point ← → std::time_t ← → std::tm ← → (std::put_time, std::get_time)이라는 std::chrono::system_clock::time_point에서의 입출력 과정에서 필요로 한다.
출처: http://dev.activebasic.com/egtra/2017/01/03/941/
이 글은 2017-03-10에 작성되었습니다.