红宝石日期宝石无效日期

时间:2018-12-15 16:48:25

标签: ruby date parsing hash argument-error

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

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

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

要获取该整数,我运行以下命令:

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

我发现使用:

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

创建比当前索引更好的日期对象

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

替换就可以了。

相关问题