[c++] 시간대 변환 처리

C++ 프로그램에서 시간대 변환을 처리하는 방법에 대해 알아보겠습니다.

<chrono> 라이브러리 사용

C++ 11부터 <chrono> 라이브러리를 사용하여 시간을 다룰 수 있습니다. 다음 예제는 시간대 변환을 처리하는 방법을 보여줍니다.

#include <iostream>
#include <chrono>
#include <ctime>

int main() {
    // 현재 시간 획득
    auto now = std::chrono::system_clock::now();
    
    // 시간대 변환
    auto tp = std::chrono::system_clock::to_time_t(now);
    auto localTime = *std::localtime(&tp);
    std::cout << "Local time: " << std::put_time(&localTime, "%F %T") << std::endl;

    // 다른 시간대로 변환
    std::chrono::time_point<std::chrono::system_clock, std::chrono::hours> 
        newTime = std::chrono::time_point_cast<std::chrono::hours>(now) + std::chrono::hours(8);
    auto newTp = std::chrono::system_clock::to_time_t(newTime);
    auto newLocalTime = *std::localtime(&newTp);
    std::cout << "Converted time: " << std::put_time(&newLocalTime, "%F %T") << std::endl;
    
    return 0;
}

위 코드는 <chrono> 라이브러리를 사용하여 현재 시간을 획득하고, 이를 로컬 시간으로 변환하고 다른 시간대로 변환하는 방법을 보여줍니다.

boost 라이브러리 사용

다른 방법으로는 boost 라이브러리를 사용하여 시간대 변환을 처리할 수 있습니다. boost 라이브러리는 다양한 시간 처리에 유용한 기능을 제공합니다.

#include <iostream>
#include <boost/date_time.hpp>

int main() {
    using namespace boost::posix_time;
    
    // 현재 시간 획득
    ptime now = second_clock::local_time();
    std::cout << "Local time: " << now << std::endl;
    
    // 시간대 변환
    ptime newTime = now + hours(8);
    std::cout << "Converted time: " << newTime << std::endl;
    
    return 0;
}

위 코드는 boost 라이브러리를 사용하여 현재 시간을 획득하고, 이를 로컬 시간으로 변환하고 다른 시간대로 변환하는 방법을 보여줍니다.

결론

C++에서 시간대 변환을 처리하는 방법은 <chrono> 라이브러리나 boost 라이브러리를 사용하여 간단하게 구현할 수 있습니다. 이러한 라이브러리를 사용하면 시간대 변환에 관련된 복잡한 로직을 직접 작성할 필요가 없어 편리합니다.

더 많은 자세한 내용은 각 라이브러리의 공식 문서를 참고하시기 바랍니다.

Boost C++ Libraries

C++ <chrono> Library Reference