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

时间:2013-07-30 19:36:42

标签: ruby file-io date-arithmetic

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

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

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

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

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

2 个答案:

答案 0 :(得分:9)

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

以上是我上述评论的实现,它返回一个浮点数,表示已经过去的天数。

答案 1 :(得分:3)

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

由于差异以天为单位,因此无需直接处理秒数。

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