Ruby on Rails:比较两个日期的最佳方法是什么?

58

我有一个日期变量,存储为字符串 'YYYY-mm-dd' 格式。最好的方法是什么,以检查该日期是否已经过去?

3个回答

96
Date.parse('2010-11-01') < Date.today

如果'2010-11-01'已经过去,将返回true


7
注意时区... 你每年只能遇到一次夏令时的问题! - aceofspades

72
你也可以使用过去式吗?
Date.parse("2012-11-01").past?

1
哇,这个不错。我尝试从API中找到,但是没有找到任何东西。谢谢。这很流畅。 - LPing
1
如果需要相反的结果,可以使用future?:如果日期/时间在未来,则返回true:Date.parse("2012-11-01").future?将返回false。 - belgoros
使用过去或未来时要小心,如果日期相同,它们将无法匹配(它检查的是严格相等)。例如,在规范中使用Timecop.freeze时,您可能需要使用!future?()而不是past?以便与冻结的时间匹配。 - Cyril Duchon-Doris

0

如果你想比较一些日期的属性,你也可以这样做:

Date.parse('2010-11-01').month < Date.today.month
Date.parse('2010-11-01').year < Date.today.year
Date.parse('2010-11-01').day < Date.today.day

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接