• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(UTC):
    が更新

    履歴 編集

    type-alias
    <filesystem>

    std::filesystem::file_time_type

    namespace std::filesystem {
      using file_time_type = chrono::time_point<実装定義のクロック型>; // (1) C++17
      using file_time_type = chrono::time_point<chrono::file_clock>;   // (1) C++20
    }
    

    概要

    ファイル情報で使用する時間の型。

    時間の分解能はOS依存。

    備考

    • C++17とC++20では標準ライブラリの実装によって、この型をstd::time_t型に変換する方法が異なる場合がある

    C++17での使用例

    #include <iostream>
    #include <fstream>
    #include <filesystem>
    #include <ctime>
    #include <iomanip>
    
    namespace fs = std::filesystem;
    
    void print_datetime(const char* name, fs::file_time_type tp)
    {
      namespace chrono = std::chrono;
      auto sec = chrono::duration_cast<chrono::seconds>(tp.time_since_epoch());
    
      std::time_t t = sec.count();
      const tm* lt = std::localtime(&t);
      std::cout << name << " : " << std::put_time(lt, "%c") << std::endl;
    }
    
    int main()
    {
      std::ofstream{"regular.txt"};
      fs::create_directory("dir");
    
      // ファイル・ディレクトリの最終更新日時を取得
      fs::file_time_type file_time = fs::last_write_time("regular.txt");
      fs::file_time_type dir_time = fs::last_write_time("dir");
    
      print_datetime("file time", file_time);
      print_datetime("dir time", dir_time);
    
      // ファイルの最終更新日時として、現在日時を設定
      fs::last_write_time("regular.txt", fs::file_time_type::clock::now());
    }
    

    出力例

    file time : Fri Jun 15 14:19:03 2018
    dir time : Fri Jun 15 14:19:03 2018
    

    C++20での使用例

    #include <iostream>
    #include <fstream>
    #include <filesystem>
    #include <ctime>
    #include <iomanip>
    
    namespace fs = std::filesystem;
    
    void print_datetime(const char* name, fs::file_time_type tp)
    {
      namespace chrono = std::chrono;
      chrono::sys_time st = chrono::file_clock::to_sys(tp);
    
      std::time_t t = chrono::system_clock::to_time_t(st);
      const tm* lt = std::localtime(&t);
      std::cout << name << " : " << std::put_time(lt, "%c") << std::endl;
    }
    
    int main()
    {
      std::ofstream{"regular.txt"};
      fs::create_directory("dir");
    
      // ファイル・ディレクトリの最終更新日時を取得
      fs::file_time_type file_time = fs::last_write_time("regular.txt");
      fs::file_time_type dir_time = fs::last_write_time("dir");
    
      print_datetime("file time", file_time);
      print_datetime("dir time", dir_time);
    
      // ファイルの最終更新日時として、現在日時を設定
      fs::last_write_time("regular.txt", fs::file_time_type::clock::now());
    }
    

    出力例

    file time : Wed Jul 15 23:08:06 2020
    dir time : Wed Jul 15 23:08:06 2020
    

    バージョン

    言語

    • C++17

    処理系

    関連項目