ruby – 无效日期ArgumentError和有效日期的错误解析?
发布时间:2020-12-17 04:33:26 所属栏目:百科 来源:网络整理
导读:dates = ["11/12/08 10:47","11/12/08 13:23","11/12/08 13:30","11/25/08 19:21","2/2/09 11:29","11/12/08 15:00"] 这会抛出一个无效的参数错误: dates.each do |date| d = Date.parse(date) d.monend #= ArgumentError: invalid date 但是在日期中取第一
dates = ["11/12/08 10:47","11/12/08 13:23","11/12/08 13:30","11/25/08 19:21","2/2/09 11:29","11/12/08 15:00"] 这会抛出一个无效的参数错误: dates.each do |date| d = Date.parse(date) d.mon end #=> ArgumentError: invalid date 但是在日期中取第一个日期,这是输出: d = Date.parse('11/12/08 10:47') puts d.mon #=> #<Date: 2011-12-08 ((2455904j,0s,0n),+0s,2299161j)> #=> 12 but this should be 11 >在第一个例子中为什么我得到一个无效的ArgumentError? 解决方法
鉴于您的输入,Date.parse正在解析您的日期,假设它们的格式为YY / MM / DD,因此当它尝试解析11/25/08时,它会失败,因为25不是有效的月份:
d = Date.parse('11/12/08 10:47') d.year # => 2011 d.month # => 12 d.day # => 8 Date.parse('11/25/08 19:21') # ArgumentError: invalid date 鉴于您的日期都采用相同的格式,您应该使用 d = Date.strptime('11/12/08 10:47','%m/%d/%y') d.year # => 2008 d.month # => 11 d.day # => 12 Date.strptime('11/25/08 19:21','%m/%d/%y') # => #<Date: 2008-11-25 ((2454796j,2299161j)> 编辑而不是格式字符串%m /%d /%y可以使用快捷键%D: Date.strptime('11/25/08 19:21','%D') # => #<Date: 2008-11-25 ((2454796j,2299161j)> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |