Latest post of the previous page:
Проблема в том, что изначальная дата файла может быть потеряна по ряду причин. Например файлы скачиваемые браузером в Downloads.
Latest post of the previous page:
Проблема в том, что изначальная дата файла может быть потеряна по ряду причин. Например файлы скачиваемые браузером в Downloads.
1000
не должно быть константой.far.FileTimeResolution
разрешающую способность ряда функций апи плагинов, иногда требуется вычислять так:
Code: Select all
local resolution = far.FileTimeResolution()==1 and 1000 or bit64.new(10000000)
win.Get/SetFileTimes
, требуется bit64.new(10000000)
независимо от режима far.FileTimeResolution
.Обсуждение: viewtopic.php?p=174178#p174178hh mk:@MSITStore:%FARHOME%\Encyclopedia\luafar_manual.chm::/544.html
Если мне например понадобится ваша функция, и я захочу сделать её в общем виде, то я просто уберу из неё конвертацию - пусть возвращает unixtime.
os.date(nil,unixtime)
.UnixToFileTime
, то её можно в самом общем виде записать так:
Code: Select all
local EPOCH_DIFF = 11644473600 --number of seconds from 1 Jan. 1601 00:00 to 1 Jan 1970 00:00 UTC
local function UnixToFileTime (unixtime, lowres)
local resolution = lowres and 1000 or bit64.new(10000000)
return (unixtime + EPOCH_DIFF) * resolution
end
lowres
опциональный параметр, для win.Get/SetFileTimes
например не нужный.Code: Select all
local filetime = UnixToFileTime(unixtime, far.FileTimeResolution()==1)
FileToUnixTime.lua
:
Code: Select all
local function FileToUnixTime (filetime, lowres)
local resolution = lowres and 1000 or 10000000
return filetime / resolution - EPOCH_DIFF
end