0

所以我正在遍历一个哈希值,其中一个键/值是 {date: => 'MM/DD/YYYY'}

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

要获得我当前所在索引的一周中的一天作为整数,以便我可以将其与另一个整数进行比较,其想法是检查索引的一周中的一天是否与我的一周中的一天相同我正在寻找。

要获得该 int,我运行以下命令:

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

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

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

对于特定日期“2017 年 9 月 13 日”。

'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 日是星期二。

4

2 回答 2

1

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

Date.strptime('9/13/2017', '%m/%e/%Y').
于 2018-12-15T17:34:47.767 回答
1

我发现使用:

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

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

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

更换就可以了。

于 2018-12-15T17:35:02.070 回答