home | help
std::filesy..._write_time(3)   C++ Standard Libary  std::filesy..._write_time(3)

NAME
     std::filesystem::last_write_time - std::filesystem::last_write_time

Synopsis
	Defined in header <filesystem>
	std::filesystem::file_time_type  last_write_time(  const	     (1)
     (since C++17)
	std::filesystem::path& p );
	std::filesystem::file_time_type last_write_time( const
	std::filesystem::path&	p,					     (2)
     (since C++17)
							 std::error_code&
	ec ) noexcept;
	void  last_write_time(	const std::filesystem::path& p, 	     (3)
     (since C++17)
			      std::filesystem::file_time_type new_time );
	void last_write_time( const std::filesystem::path& p,

			      std::filesystem::file_time_type  new_time,     (4)
     (since C++17)

			      std::error_code& ec ) noexcept;

	1,2) Returns the time of the last modification of p, determined as if by
     accessing
	the  member st_mtime of the POSIX stat (symlinks are followed). The non-
     throwing
	overload returns file_time_type::min() on errors.
	3,4) Changes the time of the last modification of p, as if by POSIX  fu-
     timens
	(symlinks are followed).

Parameters
	p	 - path to examine or modify
	new_time - new modification time
	ec	  -  out-parameter for error reporting in the non-throwing over-
     load

Return value
	1,2) The time of the last modification of p.
	3,4) (none)

Exceptions
	Any overload not marked noexcept may throw std::bad_alloc if memory  al-
     location
	fails.

	1,3)  Throws  std::filesystem::filesystem_error on underlying OS API er-
     rors,
	constructed with p as the first path argument and the OS error	code  as
     the error
	code argument.
	2,4) Sets a std::error_code& parameter to the OS API error code if an OS
     API call
	fails, and executes ec.clear() if no errors occur.

Notes
	It  is not guaranteed that immediately after setting the write time, the
     value
	returned by (1,2) is the same as what was  passed  as  the  argument  to
     (3,4) because
	the   file   system's	time   may   be   more	granular  than	filesys-
     tem::file_time_type.

Example
     // Run this code

      #include <chrono>
      #include <filesystem>
      #include <format>
      #include <fstream>
      #include <iostream>

      using namespace std::chrono_literals;

      int main()
      {
	  auto p = std::filesystem::temp_directory_path() / "example.bin";
	  std::ofstream{p.c_str()}.put('a'); // create file

	  std::filesystem::file_time_type      ftime	   =	   std::filesys-
     tem::last_write_time(p);
	  std::cout << std::format("File write time is {}\n", ftime);

	  // move file write time 1 hour to the future
	  std::filesystem::last_write_time(p, ftime + 1h);

	  // read back from the filesystem
	  ftime = std::filesystem::last_write_time(p);
	  std::cout << std::format("File write time is {}\n", ftime);

	  std::filesystem::remove(p);
      }

Possible output:
      File write time is 2023-09-04 19:33:24.702639224
      File write time is 2023-09-04 20:33:24.702639224

See also
	file_time_type	represents file time values
	(C++17) 	(typedef)
			gets  the time of the last data modification of the file
     to which the
	last_write_time directory entry refers
			(public  member  function   of	 std::filesystem::direc-
     tory_entry)

http://cppreference.com 	   2024.06.10	    std::filesy..._write_time(3)

home | help