使用localtime_s获取当前日期

get current date with localtime_s

本文关键字:获取 当前日期 localtime 使用      更新时间:2023-10-16
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

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

不幸的是,在内存中分配time_t变量不会自动计算自Epoch以来的时间。这里有一个问题解决了同样的问题,除了它有一个您正在寻找的代码示例。

我从一个不同的问题中发现你如何得到一天中的当前时间?

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

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

非常感谢Mark Brackett的回答