Ruby 如何获取文件';红宝石的年龄是多少天?

Ruby 如何获取文件';红宝石的年龄是多少天?,ruby,file-io,date-arithmetic,Ruby,File Io,Date Arithmetic,在Ruby中,如何以天为单位计算文件的年龄 请注意,我需要一种方法来准确地获取给定文件的年龄;这意味着需要考虑闰年 我需要一个程序,删除文件后,他们达到一定的年龄在几天内,如文件是20天或以上 说到年龄,我指的是给定文件的最后一次访问时间,因此,如果一个文件在过去20天或更长时间内未被访问,它将被删除 在Perl中,我知道可以用从公元1年起的天数来计算日期,我以前有一个通用的Lisp程序,它使用了date::calc的通用Lisp实现,但我现在没有了,所以我一直在寻找替代方法,Ruby似乎具有所

在Ruby中,如何以天为单位计算文件的年龄

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

我需要一个程序,删除文件后,他们达到一定的年龄在几天内,如文件是20天或以上

说到年龄,我指的是给定文件的最后一次访问时间,因此,如果一个文件在过去20天或更长时间内未被访问,它将被删除

在Perl中,我知道可以用从公元1年起的天数来计算日期,我以前有一个通用的Lisp程序,它使用了
date::calc
的通用Lisp实现,但我现在没有了,所以我一直在寻找替代方法,Ruby似乎具有所需的功能

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

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

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

由于差异以天为单位,因此不需要直接处理秒

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

您可以从当前纪元中减去文件的POSIX EPOCH时间,然后将其转换为几天(这将是文件的几秒钟的时间)。您可能需要考虑使用shell和<代码>查找< /C>命令。它内置于其中,允许您搜索超过特定天数的文件。执行
人工查找时,请查看其
atime
mtime
参数。虽然Ruby可以做到这一点,但它的
find
非常简单,并且可以很容易地生成一行命令。我已经发布了一个答案,使用了我上面评论中的方法,我希望这对您有用。@AaronCronin谢谢,我很感激。:)每天有86400秒,来解释这个神奇的数字!用
来_i
然后用浮点数除法有什么意义?