因此,我正在遍历一个散列,其中一个键值为{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)
用于特定日期"9/13/17"。
"9/13/17"有什么问题吗?为什么这实际上在其他日子有效(从"9/15/17"开始(,然后在这一天被随机卡住?
在我写这篇文章的时候,我做了一点挖掘,发现了它到底是什么索引:
d = Date.parse(hash[4224].values[2])
day_of_the_week = d.cwday
给了我同样的错误,我完全困惑了,到底发生了什么?此外,9月等日也没有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)
换上它就成功了。