代码之家  ›  专栏  ›  技术社区  ›  PinkTurtle

std::filesystem::file_time_type from time_t-如何?

  •  0
  • PinkTurtle  · 技术社区  · 2 年前

    我想创建 std::filesystem::file_time_type 来自 std::time_t 我不知道怎么做。

    例子:

    time_t t = 1337;
    std::filesystem::file_time_type ft = ...; //how?
    

    理想情况下,我希望这能与c++17一起使用,但我也会采用c++20解决方案。

    1 回复  |  直到 2 年前
        1
  •  3
  •   Barry    2 年前

    您可以分两个步骤完成:

    1. time_t system_clock::time_point 通过 std::chrono::system_clock::from_time_t
    2. system_clock::时间点 file_clock::time_point 通过 std::chrono::clock_cast

    总计:

    auto from_time_t_to_file_clock(std::time_t tt) {
        auto st = std::chrono::system_clock::from_time_t(tt);
        return std::chrono::clock_cast<std::chrono::file_clock>(st);
    }
    

    有一个可选功能 std::chrono::file_clock::from_sys 可以用于步骤2,但它是可选的(可能有 from_utc 相反),并且 clock_cast 无论如何都会做正确的事情,所以不妨使用它。