Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ localtime() 함수 – 개념, 문법 및 예제 총정리

이 글에서는 C++ STL의 localtime() 함수가 어떻게 동작하는지, 그리고 그 문법과 실제 활용 예제까지 자세히 살펴보겠습니다.

localtime() 함수란?

localtime() 함수는 C++ STL에 내장된 함수로, <ctime> 헤더 파일에 정의되어 있습니다. 이 함수는 주어진 시간 값을 시스템의 현지 시간(지역 시간)으로 변환하는 데 사용됩니다.

함수는 timer 포인터가 참조하는 값을 읽어 tm 구조체에 값을 채워 넣으며, 이 값을 실행 중인 시스템이 설정된 지역 시간대에 맞게 변환합니다.

문법

localtime(time_t *timer);

매개변수

이 함수는 다음 매개변수를 받습니다.

  • timer − time_t 타입의 시간 값을 담고 있는 객체를 가리키는 포인터입니다.

반환값

이 함수는 지역 시간대 기준으로 변환된 시간 정보가 저장된 tm 구조체를 가리키는 포인터를 반환합니다. 변환에 실패할 경우 NULL을 반환합니다.

tm 구조체의 주요 멤버

멤버설명범위
tm_sec0 ~ 61
tm_min0 ~ 59
tm_hour시(24시간 기준)0 ~ 23
tm_mday1 ~ 31
tm_mon월 (0 = 1월)0 ~ 11
tm_year1900년 이후 경과 연도
tm_wday요일 (0 = 일요일)0 ~ 6
tm_yday연중 경과 일수0 ~ 365
tm_isdst서머타임(DST) 적용 여부

예제

#include <bits/stdc++.h>
using namespace std;
int main(){
    time_t hold;
    hold = time(NULL);
    tm* hold_local = localtime(&hold);
    cout<<"현재 시스템의 지역 시간은: "<< hold_local->tm_hour << ":"<<hold_local->tm_min << ":"<<hold_local->tm_sec;
    return 0;
}

출력 결과

현재 시스템의 지역 시간은: 8:28:57

참고 사항

localtime()은 내부적으로 정적(static) 버퍼를 공유하기 때문에 스레드 세이프하지 않습니다. 따라서 멀티스레드 환경에서는 POSIX 계열의 localtime_r() 또는 C11 표준의 localtime_s()를 사용하는 것이 더 안전합니다. 또한 반환된 포인터는 함수 내부 버퍼를 가리키므로, 필요하다면 별도의 tm 구조체에 값을 복사해 두는 것이 좋습니다.