Ответ на ваш вопрос ... сложен. Потому что C ++ должен быть C ++.
В самом техническом смысле ответ - да: std::filesystem::last_write_time
может использоваться для установки последнего времени записи для файла .
Причина, по которой ответ неверен в более реалистическом смысле, заключается в том, что last_write_time
принимает std::filesystem::file_time_type
как свое время. И это проблематично.
Видите, эпоха для этого момента времени (который составляет 0 раз) ... определяется реализацией. Это может быть время UNIX (ноль - 1 января 1970 года в 00:00:00). Или это может быть что-то еще.
Поскольку это определяется реализацией, невозможно переносимо повернуть число секунд / минут / дней / и т. Д. Относительно некоторой известной эпохи (как, например, время в вашем архиве) в std::filesystem::file_time_type
просто потому, что вы не знаете, как говорить file_time_type
. Единственное, что вы действительно можете сделать, - это использовать существующие значения file_time_type
s и настроить их на любое произвольное количество времени (или установить текущее время с помощью file_time_type::clock::now()
). Но вы не можете установить время файла для некоторой известной абсолютной даты / времени.
C ++ 20, к счастью, закрывает эту дыру. system_clock
потребуется для работы во времени UNIX, а file_time_type
потребуется, чтобы иметь возможность std::chrono::clock_cast
ed из / в любой тип, который может быть преобразован во время system_clock
.
Но до тех пор, last_write_time
не так полезен, как следовало бы ...