【发布时间】:2011-12-06 20:54:59
【问题描述】:
我需要比较 2 个字符串日期以查看一个日期是否晚于另一个日期。两个日期的日期格式都在底部。我可以重新安排这个最简单的。我有提升,但它不一定是,我经历了这么多例子,似乎无法让我的大脑围绕它工作。提前谢谢,基本上我想要
2012-12-06 14:28:51
if (date1 < date2) {
// do this
}
else {
// do that
}
【问题讨论】:
我需要比较 2 个字符串日期以查看一个日期是否晚于另一个日期。两个日期的日期格式都在底部。我可以重新安排这个最简单的。我有提升,但它不一定是,我经历了这么多例子,似乎无法让我的大脑围绕它工作。提前谢谢,基本上我想要
2012-12-06 14:28:51
if (date1 < date2) {
// do this
}
else {
// do that
}
【问题讨论】:
您使用的日期格式似乎已经按字典顺序排列,并且可以进行标准字符串比较,例如:
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 会起作用。
【讨论】:
您很幸运 - 您的日期已经采用正确的格式,可以进行标准字符串比较并获得正确的结果。所有部分从最重要到最不重要,并且您使用的是 24 小时时间。
如果这些是std::strings,您可以像在示例中一样使用<。如果它们是 C 风格的字符数组字符串,请使用 strcmp。
【讨论】:
strcmp()返回一个整数值,表示字符串之间的关系:
result = strcmp( string1, string2 );
if( result > 0 ) strcpy( tmp, "greater than" );
else if( result < 0 ) strcpy( tmp, "less than" );
零值表示两个字符串相等。 大于零的值表示第一个不匹配的字符在 str1 中的值大于在 str2 中的值;而小于零的值则相反。
#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;
}
【讨论】: