Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;与字符串日期比较_C++_Datetime_Compare - Fatal编程技术网

C++ C++;与字符串日期比较

C++ C++;与字符串日期比较,c++,datetime,compare,C++,Datetime,Compare,我需要比较两个字符串日期,看看一个日期是否比另一个日期晚。两个日期的日期格式都在底部。我可以把它重新安排成最简单的事情。我有助推功能,但不一定是,我已经看过很多例子,似乎无法让我的大脑围绕着它工作。提前谢谢基本上我想要 2012-12-06 14:28:51 if(日期1

我需要比较两个字符串日期,看看一个日期是否比另一个日期晚。两个日期的日期格式都在底部。我可以把它重新安排成最简单的事情。我有助推功能,但不一定是,我已经看过很多例子,似乎无法让我的大脑围绕着它工作。提前谢谢基本上我想要

2012-12-06 14:28:51

if(日期1
你很幸运-你的日期已经以正确的格式进行了标准字符串比较并得到了正确的结果。所有部分都从最重要到最不重要,并且您使用24小时的时间


如果这些是
std::string
s,您可以使用
它看起来您使用的日期格式已经按字典顺序排列,并且标准字符串比较将起作用,例如:

std::string date1 = "2012-12-06 14:28:51";
std::string date2 = "2012-12-06 14:28:52";
if (date1 < date2) {
    // ...
}
else {
    // ...
}
std::string date1=“2012-12-06 14:28:51”;
std::string date2=“2012-12-06 14:28:52”;
如果(日期1<日期2){
// ...
}
否则{
// ...
}
使用此格式时,您需要确保空格和标点符号一致,特别是类似于
2012-12-06 9:28:51的内容会破坏比较
2012-12-06 09:28:51
将起作用。

strcmp()
返回一个整数,指示字符串之间的关系:

 result = strcmp( string1, string2 ); 
 if( result > 0 )  strcpy( tmp, "greater than" );
 else if( result < 0 )  strcpy( tmp, "less than" );
result=strcmp(string1、string2);
如果(结果>0)strcpy(tmp,“大于”);
否则,如果(结果<0)strcpy(tmp,“小于”);
零值表示两个字符串相等。 大于零的值表示第一个不匹配的字符在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;
}
#包括
#包括
字符字符串1[]=“2012-12-06 14:28:51”;
字符字符串2[]=“2011-12-06 14:28:51”;
内部主(空)
{
char-tmp[20];
int结果;
printf(“比较字符串:\n%s\n%s\n\n”,字符串1,字符串2);
结果=strcmp(string1,string2);
如果(结果>0)strcpy(tmp,“大于”);
否则,如果(结果<0)strcpy(tmp,“小于”);
其他结构比(tmp,“等于”);
printf(“strcmp:String 1是%s String 2\n\n”,tmp);
返回0;
}

只要他们是UTC。或者,更一般地说,相同的时区。如果且仅当小于10小时为零填充,例如01:00:00<02:00:00,但1:00:00>02:00:00,则您是对的@Seth Carnegie真的是这样吗?谢谢你,我不知道对我来说会这么简单。一般来说,编程语言将日期转换成整数,然后比较整数,这样做更有意义;对开发人员来说,按“词典”进行比较很容易出错。
#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;
}