【问题标题】:get current date with localtime_s使用 localtime_s 获取当前日期
【发布时间】:2016-10-14 19:25:27
【问题描述】:
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

【问题讨论】:

    标签: c++


    【解决方案1】:

    time_t 变量应该用time(&rawtime) 初始化,以便localtime_s 可以使用它来正确填写struct。就像您的第一行 time_t t = time(0) 一样,您需要使用 time 函数初始化变量,并将空参数 (0) 或指向变量的指针 (&rawtime) 传递给它。

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

    【讨论】:

      【解决方案2】:

      我从另一个问题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 的回答

      【讨论】:

        猜你喜欢
        • 2020-09-19
        • 2013-07-31
        • 1970-01-01
        • 1970-01-01
        • 2011-06-10
        • 1970-01-01
        • 1970-01-01
        • 2010-11-12
        • 1970-01-01
        相关资源
        最近更新 更多