比较C ++中的日期

时间:2009-10-12 04:55:43

标签: c++ datetime

我有一个文件'date.txt',里面有日期。喜欢, 2009年10月13日星期一09:37:08。

现在我想将此日期与系统日期进行比较。如何比较C ++中的日期。?

我使用此代码从'date.txt'文件中获取内容

    string date;
    while ( inDateFile >>date) //inDateFile is an ifstream object 
           cout<<date<<endl;

此代码获取系统日期,

  time_t timer;
  struct tm *tblock;
  timer = time(NULL);
  tblock = localtime(&timer);
  string str = asctime(tblock);

现在我该如何比较这两个日期。?

5 个答案:

答案 0 :(得分:4)

解析值,使用std::mktime函数获取time_t,现在使用std::difftime来获取差异。

答案 1 :(得分:2)

我们使用boost date_time从字符串中读取日期,然后比较它们。它在我们的经验中非常有效。

答案 2 :(得分:1)

将日期字符串转换为数字时间值(32或64位),也称为生成时间,然后与系统时间(NULL)返回进行比较。

答案 3 :(得分:0)

如果您只想解析文件中的字符串,您需要在resp值中拆分字符串,您可能还需要检查要考虑的国家/地区区域,因为不同的地区有不同的订单/月份名称等你可以根据文本中不同的标记的顺序进行配置。

解决此问题的一种方法是,例如,使用字符串'date'然后使用boost中的模板Tokenizer(或者如果你想这样做,那么C方式调用strtok()函数)来分割根据分隔符将字符串放入子字符串中。之后,很容易转换输入。

另一个更简单的方法是当你从文件中读取而不是读取整个字符串时读取分隔符,例如','然后再读一遍 - 你可以使用inDateFile.getline()。

答案 4 :(得分:-2)

http://datetime.perl.org/index.cgi?FAQBasicUsage

在比较之前,您必须将数据从txt文件转换为tm结构。