Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Ruby中比较两个文件日期的最佳方法是什么?_Ruby_File_Date - Fatal编程技术网

在Ruby中比较两个文件日期的最佳方法是什么?

在Ruby中比较两个文件日期的最佳方法是什么?,ruby,file,date,Ruby,File,Date,我正在构建.pkg文件 每个构建都附带一个log.txt文件,该文件的创建时间比相应的.pkg文件晚约2秒 我现在必须编写一个脚本来自动在相关文件夹中发布版本/beta版 Beta版本将移动到Beta_build文件夹,发布版本将移动到Release_build文件夹 日志文件中指示了版本类型(beta版或发行版) 在执行这些操作(将.pkg文件移动到正确的文件夹中,重命名.pkg文件等)之前,我需要找到最新的pkg文件(最后一个已生成的文件),并确保找到相应的log.txt文件(可能是最后一个

我正在构建.pkg文件

每个构建都附带一个log.txt文件,该文件的创建时间比相应的.pkg文件晚约2秒

我现在必须编写一个脚本来自动在相关文件夹中发布版本/beta版

Beta版本将移动到Beta_build文件夹,发布版本将移动到Release_build文件夹

日志文件中指示了版本类型(beta版或发行版)

在执行这些操作(将.pkg文件移动到正确的文件夹中,重命名.pkg文件等)之前,我需要找到最新的pkg文件(最后一个已生成的文件),并确保找到相应的log.txt文件(可能是最后一个已创建的文件)


输出:

最新的pkg文件是/是:

→ build.pkg

→ 2021-03-05 07:12:54+0100

最近的日志文件是:

→ log.txt

→ 2021-03-05 07:12:56+0100

我已经可以使用它了,并且可以合理地确认最新的log.txt文件必须与最新的build.pkg文件相对应

但出于某些原因,我必须添加第二级验证

这就是为什么我想比较这两个日期/字符串,以确保它们的值“足够接近”。让我们假设2分钟结束


以下是更详细的问题:

2021-03-05 07:12:54+0100(pkg)不等于2021-03-05 07:12:56+0100(log)

让我们看一个更微妙的情况;我们现在大约在午夜建造:

2021-03-05 23:59:59+0100(pkg)与2021-03-06 00:00:01+0100(log)非常不相等


这就是障碍:

我需要一种方法来比较这两个日期,允许一定的基于时间的差异(比如说2分钟),并且我不能使用额外方便的Ruby库(它必须在默认的macOS系统、最新的OS版本中是可执行的)

如果两个日期足够接近(最多相差2分钟),则比较结果将返回true

如果文件日期相差超过2分钟,则比较将返回false

有什么想法吗


提前感谢。

mtime
为您提供时间,而不是字符串。 可以“减去”时间对象,以秒为单位。如果a和b都是文件,则可以执行以下操作

(b.mtime - a.mtime).between?(0, 120)

如果b比a早2分钟,则返回false。

mtime
为您提供时间,而不是字符串。 可以“减去”时间对象,以秒为单位。如果a和b都是文件,则可以执行以下操作

(b.mtime - a.mtime).between?(0, 120)

如果b比a早2分钟,则返回false。

pkgtime\u logtime\u match=(File.mtime(most\u recent\u log\u File)-File.mtime(most\u recent\u pkg\u files)).between?(0,120)将pkgtime\u logtime\u match=>true非常有效。谢谢输入错误警报:“五个”->“给出”.pkgtime\u logtime\u match=(File.mtime(最新的日志文件)-File.mtime(最新的日志文件))。介于?(0,120)之间将pkgtime\u logtime\u match=>设置为true效果最佳。谢谢输入错误警报:“五个”->“给”。