반응형

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;
}




반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


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

+ Recent posts