【问题标题】:Compare current time with given time比较当前时间和给定时间
【发布时间】:2015-02-24 12:16:14
【问题描述】:

所以...我正在尝试将当前日期与我初始化的日期进行比较。我有这个代码,但它总是进入 if 比较,即使日期不同。请帮忙?

   int main ()
{
  time_t rawtime;
  struct tm  data;

  data.tm_year=2014-1900;
  data.tm_mon=12-1;
  data.tm_mday=27;
  data.tm_hour=17;
  data.tm_min=4;
  data.tm_sec=0;

  time ( &rawtime );

  if(mktime(&data) == time(&rawtime))

   {
    printf("Same date\n");
  }

  return 0;
}

【问题讨论】:

  • 你的可能,我的没有(没有打印)。用给定的 VS 编译(加上#includes)。这是您的确切程序吗?

标签: c time compare time.h


【解决方案1】:

你的比较是错误的应该是

if (mktime(&data) == rawtime)

或者只是

if (mktime(&data) == time(NULL))

另外,初始化所有struct tm data;的字段或

memset(&data, 0, sizeof data);

【讨论】:

  • time() 返回它写入指针参数(如果提供)的相同值。 “时间函数根据系统时钟返回自协调世界时 (UTC) 1970 年 1 月 1 日午夜 (00:00:00) 以来经过的秒数。返回值存储在计时器给定的位置。 "
  • @WeatherVane 是的,这就是为什么我提出第二种方法的原因,如果OP不需要存储time()的返回值,那么第二种方法是首选,至少我喜欢它。
  • 你是如何测试它的?
  • 两种方法都可以,试试这个time_t rawtime; struct tm *data; time(&rawtime); data = localtime(&rawtime); if (mktime(data) == rawtime) printf("Same data\n");
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-11
相关资源
最近更新 更多