使用localtime_s获取当前日期

时间:2016-10-14 19:25:27

标签: c++

time_t t = time(0);
struct tm *now = localtime(&t);

使用上面的代码,我可以简单地得到这样的日期:

int yearNow = (now.tm_year + 1900), monthNow = (now.tm_mon + 1), dayNow = now.tm_mday

但是Visual Studio 2015在localtime上给我错误,请我改为使用localtime_s。以下是使用localtime_s的代码:

time_t rawtime;
struct tm now;
localtime_s(&now, &rawtime);

但问题是,如何在int中获取当前的实际年,月,日? 我使用以下代码打印变量:cout << now.tm_year << " " << now.tm_mon << " " << now.tm_mday; 但输出为-1 -1 -1

2 个答案:

答案 0 :(得分:0)

time_t变量应使用time(&rawtime)初始化,以便localtime_s可以使用它来正确填写struct。与第一行time_t t = time(0)非常相似,需要使用time函数初始化变量,并将其传递给null参数(0)或指向变量的指针(&amp; rawtime)。

不幸的是,在内存中分配time_t var并不会自动计算自Epoch以来的时间。 Here's一个解决同一问题的问题,但它有一个您正在寻找的代码示例。

答案 1 :(得分:-1)

我从另一个问题How do you get the current time of day?

中找到了什么

下面的代码会为您提供日期的字符串。你应该能够拆分它并将其转换为int。

  

DateTime.Now.TimeOfDay将它作为TimeSpan(从午夜开始)发送给您。   DateTime.Now.ToString(“h:mm:ss tt”)将它作为字符串提供给您。   日期时间参考:https://msdn.microsoft.com/en-us/library/system.datetime

非常感谢Mark Brackett的回答