2

我如何在 Ruby 中获得文件的天数?

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

我需要一个程序在文件达到特定天数后删除文件,例如 20 天或更早的文件。

至于年龄,我指的是给定文件的最后访问时间,所以如果一个文件在过去 20 天或更长时间内没有被访问过,它就会被删除。

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

4

3 回答 3

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

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

于 2013-07-30T19:48:28.963 回答
5

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

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

require 'date'
age_in_days = (Date.today - File.mtime(path).to_date).to_i
if age_in_days > 20
    # delete logs
end
于 2016-03-16T11:39:15.033 回答
0

如果使用 Rails,您可以利用 ActiveSupport:

if File.mtime(path) < 20.days.ago
  # delete logs
end

如果您不使用 Rails,我会选择 Eduardo 的上述解决方案。

于 2022-02-24T16:45:19.747 回答