2011-12-06 4 views
2

두 문자열 날짜를 비교하여 한 날짜가 다른 날짜인지 비교해야합니다. 두 날짜의 날짜 형식은 맨 아래에 있습니다. 나는 이것을 가장 쉬운 것이 무엇인지 재배치 할 수있다. 나는 부스트를 가지고 있지만 그렇게 할 필요는 없습니다. 많은 예제를 통해 이루어졌고 작동하도록 두뇌를 감쌀 수없는 것 같습니다. 미리 감사는 기본적으로 내가C++ 문자열 날짜 비교

2012년 12월 6일 14시 28분 51초

if (date1 < date2) { 
// do this 
} 
else { 
// do that 
} 

답변

2

무엇인가, 그것은 사전 편찬 위해 이미 사용 날짜 형식처럼되어 보이는 표준 문자열 비교 작동합니다 :

std::string date1 = "2012-12-06 14:28:51"; 
std::string date2 = "2012-12-06 14:28:52"; 
if (date1 < date2) { 
    // ... 
} 
else { 
    // ... 
} 
당신은이를 사용할 때 간격과 문장 부호가 일치하는지 확인해야합니다

형식, 특히 2012-12-06 9:28:51 같은 것이 비교를 중단합니다. 2012-12-06 09:28:51도 사용할 수 있습니다.

result = strcmp(string1, string2); 
if(result > 0) strcpy(tmp, "greater than"); 
else if(result < 0) strcpy(tmp, "less than"); 

제로 값은 두 문자열이 동일한 것을 나타냄

+0

고마워요 그게 간단합니다 – user1054513

+0

내게 그것은 단지 더 많은 의미를 prog 언어에 대한 정수로 변환하고 정수를 비교하기 위해 일반적으로; "사 전적으로"사물을 비교하는 것은 개발자 측에서 실수를 범하기 쉽다. –

4

당신이 운이 좋다 싶어 - 날짜가 표준 문자열 비교를 할 수있는 적절한 형식으로 이미 정확한 결과를 얻으십시오. 모든 부품이 가장 중요한 부분부터 가장 중요한 부분으로 이동하며 24 시간 사용합니다.

std::string이면 샘플에있는 것과 똑같이 <을 사용할 수 있습니다. C 스타일 문자 배열 문자열 인 경우 strcmp을 사용하십시오.

+1

UTC 인 한. 또는 더 일반적으로 동일한 시간대. – smparkes

+1

10시보다 적은 시간이 제로로 채워진 경우에만 당신이 맞을 것입니다. 01:00:00 <02:00:00, 1:00:00> 02:00:00. @Seth Carnegie 정말 그런 경우입니까? – fronsacqc

+0

그것의 간단한, 고마워 – user1054513

0

strcmp()은 문자열 사이의 관계를 나타내는 정수 값을 반환한다. 0보다 큰 값은 일치하지 않는 첫 번째 문자가 str1에서 str2보다 큰 값을 가짐을 나타냅니다. 그리고 0보다 작은 값은 반대를 나타냅니다.

#include <string.h> 
#include <stdio.h> 

char string1[] = "2012-12-06 14:28:51"; 
char string2[] = "2011-12-06 14:28:51"; 

int main(void) 
{ 
    char tmp[20]; 
    int result; 

    printf("Compare strings:\n %s\n %s\n\n\n", string1, string2); 
    result = strcmp(string1, string2); 

    if(result > 0)  strcpy(tmp, "greater than"); 
    else if(result < 0) strcpy(tmp, "less than"); 
    else strcpy(tmp, "equal to"); 

    printf(" strcmp: String 1 is %s string 2\n\n", tmp); 

    return 0; 
}