如何在 C 中获取当前时间和日期?

新手上路,请多包涵

是否有跨平台的方法来获取 C++ 中的当前日期和时间?

原文由 Max Frai 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 999
2 个回答

从 C++ 11 开始,您可以使用 std::chrono::system_clock::now()

示例(从 en.cppreference.com 复制):

 #include <iostream>
#include <chrono>
#include <ctime>

int main()
{
    auto start = std::chrono::system_clock::now();
    // Some computation here
    auto end = std::chrono::system_clock::now();

    std::chrono::duration<double> elapsed_seconds = end-start;
    std::time_t end_time = std::chrono::system_clock::to_time_t(end);

    std::cout << "finished computation at " << std::ctime(&end_time)
              << "elapsed time: " << elapsed_seconds.count() << "s"
              << std::endl;
}

这应该打印如下内容:

 finished computation at Mon Oct  2 00:59:08 2017
elapsed time: 1.88232s

原文由 Frederick The Fool 发布,翻译遵循 CC BY-SA 4.0 许可协议

这是获取时间戳的非弃用现代 C++ 解决方案 std::string 用于例如文件名:

 std::string get_file_timestamp()
{
    const auto now = std::chrono::system_clock::now();
    const auto in_time_t = std::chrono::system_clock::to_time_t(now);

    std::stringstream output_stream;

    struct tm time_info;
    const auto errno_value = localtime_s(&time_info, &in_time_t);
    if(errno_value != 0)
    {
        throw std::runtime_error("localtime_s() failed: " + std::to_string(errno_value));
    }

    output_stream << std::put_time(&time_info, "%Y-%m-%d.%H_%M_%S");
    return output_stream.str();
}

原文由 BullyWiiPlaza 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题