获取自C ++(跨平台)epoch以来的天数

时间:2013-01-09 19:09:05

标签: c++ cross-platform epoch mktime

我怎么能得到自C ++以来的时代以来的天数,我知道我应该使用mktime函数,但我不明白如何实现它

谢谢!

3 个答案:

答案 0 :(得分:3)

修改cplusplus.com的一些示例代码:

#include <stdio.h>
#include <time.h>

int main ()
{
  time_t seconds;

  seconds = time (NULL);
  int daysSinceEpoch = seconds/(60*60*24);
  printf ("%ld days since January 1, 1970", daysSinceEpoch);

  return 0;
}

答案 1 :(得分:1)

首先使用time(NULL)获取当前时间。将该值传递给gmtime,这会返回tm*。阅读tm的文档。

答案 2 :(得分:1)

日期不容易正确使用。目前的标准库无法正确执行此操作。您应该使用适当的日期库,例如boost :: date或Howard Hinnant's <date>

使用Hinnant的库,代码可能如下所示:

date epoch = year(1970)/jan/day(1); // Assuming you're referring to the traditional Unix epoch (some systems such as Cocoa on OS X use the first day of the millenium, Jan 1, 2001 as their epoch)
days d = date::today() - epoch;