>백엔드 개발 >C++ >C 11의 std::chrono를 사용하여 날짜 문자열을 구문 분석하고 경과 시간을 계산하려면 어떻게 해야 합니까?

C 11의 std::chrono를 사용하여 날짜 문자열을 구문 분석하고 경과 시간을 계산하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-29 22:29:10547검색

How Can I Parse Date Strings and Calculate Elapsed Time Using C  11's std::chrono?

C 11 std::chrono를 사용하여 날짜 문자열 구문 분석

날짜 및 시간 정보로 작업할 때 날짜 문자열을 구문 분석해야 하는 경우가 많습니다. 적절한 데이터 표현으로 변환합니다. C 11의 경우 std::chrono 네임스페이스는 기간 및 시점을 처리하기 위한 강력한 도구를 제공합니다.

날짜 문자열 구문 분석

날짜 문자열을 std로 구문 분석하려면 다음을 수행하세요. :chrono, GCC는 std::get_time 함수를 제공합니다. std::tm 객체와 형식 문자열이 주어지면 std::get_time은 입력 문자열에서 날짜 및 시간 구성 요소를 추출할 수 있습니다. 다음 코드 조각은 이를 보여줍니다.

std::tm tm = {};
std::stringstream ss("Jan 9 2014 12:35:34");
ss >> std::get_time(&tm, "%b %d %Y %H:%M:%S");

GCC 5 이전 버전은 std::get_time을 구현하지 않습니다. 대안으로, strptime을 사용할 수 있습니다:

std::tm tm = {};
strptime("Thu Jan 9 2014 12:35:34", "%a %b %d %Y %H:%M:%S", &tm);

경과 시간 계산

std::tm 객체에 구문 분석된 날짜와 시간이 있으면 다음을 사용하여 time_point로 변환할 수 있습니다. std::chrono::system_clock::from_time_t:

auto tp = std::chrono::system_clock::from_time_t(std::mktime(&tm));

이 time_point는 현재 시간대의 구문 분석된 날짜 및 시간을 나타냅니다. 구문 분석된 날짜 이후 경과된 시간을 계산하려면 구문 분석된 time_point에서 현재 time_point를 뺍니다.

auto now = std::chrono::system_clock::now();
auto elapsed = now - tp;

시간 구성 요소 액세스

std::chrono:: 기간 객체는 경과 시간 구성 요소에 대한 액세스를 제공합니다. 초, 분, 시간 및 일 수를 검색하려면 다음 함수를 사용하십시오.

auto seconds = std::chrono::duration_cast<std::chrono::seconds>(elapsed).count();
auto minutes = std::chrono::duration_cast<std::chrono::minutes>(elapsed).count();
auto hours = std::chrono::duration_cast<std::chrono::hours>(elapsed).count();
auto days = std::chrono::duration_cast<std::chrono::days>(elapsed).count();

이러한 기술을 활용하면 날짜 문자열을 std::chrono 시점으로 효과적으로 구문 분석하고 경과 시간을 계산할 수 있습니다. 분석된 날짜 이후의 시간을 확인하여 편리하고 효율적인 방식으로 원하는 시간 구성 요소에 대한 액세스를 제공합니다.

위 내용은 C 11의 std::chrono를 사용하여 날짜 문자열을 구문 분석하고 경과 시간을 계산하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.