如何在Ruby中获取文件的使用年限?
请注意,我需要一种方法准确地获取给定文件的年龄;这意味着需要考虑闰年。
我需要这个程序,用于在文件达到特定年龄(例如20天或更早的文件)后删除文件。
根据年龄,我指的是给定文件的最后访问时间,因此如果在过去20天或更长时间内未访问过某个文件,则会将其删除。
在Perl中,我知道您可以使用date::calc
来计算自公元1年以来的日期,我曾经有一个Common-Lisp程序使用了{{1的Common-Lisp实现但是我不再那样了,所以我一直在寻找替代方案,Ruby似乎具备所需的功能。
答案 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