>백엔드 개발 >C++ >C에서 두 문자열 시간 값 사이의 이전 시간을 결정하는 방법은 무엇입니까?

C에서 두 문자열 시간 값 사이의 이전 시간을 결정하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-29 22:34:10295검색

How to Determine the Earlier Time Between Two String Time Values in C  ?

문자열 시간을 time_t로 변환

"hh:mm:ss" 형식의 시간이 포함된 문자열을 C에서 time_t로 변환하는 방법은 다음과 같습니다.

한 가지 방법은 C 11의 고급 시간 및 날짜 조작 기능을 활용하는 것입니다. 도서관. 다음 단계를 활용할 수 있습니다.

  • tm 구조체를 정의합니다.
  • istringstream을 사용하여 시간 문자열을 읽습니다.
  • get_time을 사용하여 시간 구성 요소를 추출합니다.
  • 다음을 사용하여 time_t 값을 구성합니다. mktime.

예:

std::tm tm;
std::istringstream ss("16:35:12");
ss >> std::get_time(&tm, "%H:%M:%S"); // or just %T in this case
std::time_t time = std::mktime(&tm);

가장 빠른 값에 대한 시간 변수 비교

시간이 포함된 두 문자열을 비교하려면 다음을 수행합니다. 해당 time_t 표현을 비교하거나 문자열 비교 기술을 사용하십시오.

사용 time_t 값의 경우 std::less를 사용하여 직접 비교할 수 있습니다. 예:

std::string curr_time = "18:35:21";
std::string user_time = "22:45:31";
std::istringstream ss_curr(curr_time);
std::istringstream ss_user(user_time);
std::tm tm_curr, tm_user;
ss_curr >> std::get_time(&tm_curr, "%H:%M:%S");
ss_user >> std::get_time(&tm_user, "%H:%M:%S");
std::time_t time_curr = std::mktime(&tm_curr);
std::time_t time_user = std::mktime(&tm_user);

if (time_curr < time_user) {
  std::cout << curr_time << " is earlier than " << user_time << std::endl;
} else {
  std::cout << user_time << " is earlier than " << curr_time << std::endl;
}

또는 두 시간이 동일한 형식이라고 가정하고 문자열 비교를 사용할 수 있습니다.

if (curr_time < user_time) {
  std::cout << curr_time << " is earlier than " << user_time << std::endl;
} else {
  std::cout << user_time << " is earlier than " << curr_time << std::endl;
}

위 내용은 C에서 두 문자열 시간 값 사이의 이전 시간을 결정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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