Ruby 日期 Gem 无效日期

Ruby Date Gem Invalid Date

所以我遍历一个散列,其中 key/values 之一是 {date: => 'MM/DD/YYYY'}

当我遍历时,我使用日期 gem 来找出每个日期是星期几,(0-6)。

要获取我当前所在的索引的星期几作为整数,以便我可以将它与另一个整数进行比较,我的想法是检查索引的星期几是否与我正在寻找的星期几。

为了得到那个 int,我 运行 使用以下命令:

d = Date.parse(hash[i].values[2])
day_of_the_week = d.cwday

当我在一个精心挑选的日期单独执行此操作时,效果很好,但我正在遍历哈希,我得到的是:

search.rb:25:in `parse': invalid date (ArgumentError)

特定日期“9/13/17”。

“9/13/17”有问题吗?为什么这实际上适用于其他日子(从“9/5/17”开始)然后随机卡在这一天?

在我写这篇文章的时候,我做了一点挖掘,发现它到底是什么索引:

d = Date.parse(hash[4224].values[2])
day_of_the_week = d.cwday

报同样的错误,我百思不得其解,这是怎么回事?也不是9/etc缺少MM,因为每隔一个月都是一样的。

编辑:结果应该是 2,2017 年 9 月 12 日是星期二。

您需要传递日期格式,使用

Date.strptime('9/13/2017', '%m/%e/%Y').

我发现使用:

d = Date.strptime(hash[i].values[2], '%m/%d/%Y')

创建当前索引的日期对象是否优于:

d = Date.parse(hash[i].values[2].to_s)

替换成功了。