2011-02-03 126 views
0

我有一个tm格式的日期。我怎样才能比较当前的系统日期。我只想比较tm_year,tm_mon,tm_mday。C++ - 与当前系统日期比较日期

int second = atoi(dateinSecond.c_str()); 
tm * ptm; 
ptm = gmtime (second); 

基本上我有一个属于不同日期的数据集合。所以我想过滤当前日期的数据。

感谢,
SYD

+0

将标签更改为“C”而不是“C++”。他们是两种不同的语言,并且这个代码在C ... – 2011-02-03 07:57:29

回答

0

为了获取当前时间,使用time功能:

time_t timeNow = time(NULL); 
tm now; 
tm* nowTemp = gmtime(&timeNow); 
memcpy(&now, nowTemp, sizeof(now)); 

int second = atoi(dateinSecond.c_str()); 
tm * ptm; 
ptm = gmtime (second); 

if (now.tm_year == ptm->tm_year && 
    now.tm_mon == ptm->tm_mon && 
    now.tm_mday == ptm->tm_mday) 
{ 
    // Equal 
} 

的原因,你必须复制tm结构是gmtime返回一个指向内部缓冲区,所以如果您再次为您的输入日期调用它,您将覆盖之前的时间结构。

+0

它抛出错误以下。错误错误C2664:'gmtime':无法将参数1从'time_t'转换为'const time_t *' – sid 2011-02-03 06:59:20