반응형

C++에서 현재 날짜, 시간을 출력하는 예제입니다.



2020. 12. 11  최초작성



최근 Visual Studio 2019를 업데이트한 후,  콘솔 프로젝트 만들시 sprintf_s 대신에 sprintf 사용해도 에러나지 않도록 하는  옵션 체크해제 항목이 사라졌네요. 

그래서 Visual Studio에서 테스트할 경우 _MSC_VER이 정의되어 있어서 sprintf_s를 사용하도록 했습니다. 



윈도우에서는 _localtime64_s를 사용하도록 했는데 리눅스에서 사용하는 localtime_r과 달리 thread safe한지 확인을 아직 못했습니다. 


C++에서 현재 날짜, 시간을 출력하는 예제입니다.



2020. 12. 11  최초작성



최근 Visual Studio 2019를 업데이트한 후,  콘솔 프로젝트 만들시 sprintf_s 대신에 sprintf 사용해도 에러나지 않도록 하는  옵션 체크해제 항목이 사라졌네요. 

그래서 Visual Studio에서 테스트할 경우 _MSC_VER이 정의되어 있어서 sprintf_s를 사용하도록 했습니다. 



윈도우에서는 _localtime64_s를 사용하도록 했는데 리눅스에서 사용하는 localtime_r과 달리 thread safe한지 확인을 아직 못했습니다. 


#include <iostream>
#include <ctime>

#ifdef _MSC_VER
#include <windows.h>

#define localtime_r(_time, _result) _localtime64_s(_result, _time)
#endif

int main()
{
    struct tm current_tm;
    time_t current_time = time(nullptr);

    localtime_r(&current_time, &current_tm);

    int year = current_tm.tm_year + 1900;
    int month = current_tm.tm_mon + 1;
    int day = current_tm.tm_mday;
    int hour = current_tm.tm_hour;
    int minute = current_tm.tm_min;
    int second = current_tm.tm_sec;

    char buf[32];
#ifdef _MSC_VER
    sprintf_s(buf, "%4d-%02d-%02d %02d:%02d:%02d", year, month, day, hour, minute, second);
#else
    sprintf(buf, "%4d-%02d-%02d %02d:%02d:%02d", year, month, day, hour, minute, second);
#endif
    std::cout << buf << std::endl;


    return 0;
}




반응형

포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
질문을 남겨주면 가능한 빨리 답변드립니다.

여러분의 응원으로 좋은 컨텐츠가 만들어집니다.
지금 본 내용이 도움이 되었다면 유튜브 구독 부탁드립니다. 감사합니다 ~~

유튜브 구독하기


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts