如何在Ruby中获取文件的年龄?

Ale*_*ura 1 ruby file-io date-arithmetic

如何在Ruby中获取文件的使用年限?

请注意,我需要一种方法来准确获取给定文件的年龄; 这意味着需要考虑闰年.

我需要这个程序,用于在文件达到特定年龄(例如20天或更早的文件)后删除文件.

按年龄,我指的是给定文件的最后访问时间,因此如果在过去20天或更长时间内未访问过某个文件,则会删除该文件.

在Perl中,我知道你可以用它date::calc来计算自公元1年以来的日期,我曾经有一个使用Common-Lisp实现的Common-Lisp程序date::calc,但我不再那样了,所以我一直在寻找替代方案,Ruby似乎具备所需的功能.

Aar*_*nin 9

path = '/path/to/file'    
(Time.now - File.stat(path).mtime).to_i / 86400.0
#=> 1.001232
Run Code Online (Sandbox Code Playgroud)

这是我上面评论的实现,它返回一个浮点数,表示通过的天数.

  • 一天有86400秒,解释神奇数字! (2认同)
  • 使用`to_i`然后用浮点除法有什么意义呢? (2认同)

Edu*_*rdo 6

我知道这是一个老问题,但我也需要同样的问题,并提出了这个可能对其他人有帮助的解决方案。

由于相差的单位是天,因此不需要直接处理秒。

require 'date'
age_in_days = (Date.today - File.mtime(path).to_date).to_i
if age_in_days > 20
    # delete logs
end
Run Code Online (Sandbox Code Playgroud)