Ruby数据解析
我确信我遗漏了一些明显的东西,但是——我正在尝试解析一个类似“2018年8月5日”(m/d/y格式)的日期。Ruby似乎完全能够使用格式字符串Ruby数据解析,ruby,date,Ruby,Date,我确信我遗漏了一些明显的东西,但是——我正在尝试解析一个类似“2018年8月5日”(m/d/y格式)的日期。Ruby似乎完全能够使用格式字符串%-m/%-d/%Y和strftime以这种格式创建日期,但由于某种原因strptime无法读取它 [1] pry(main)> require 'date' => true [2] pry(main)> format = '%-m/%-d/%Y' => "%-m/%-d/%Y" [3] pry(main)> today =
%-m/%-d/%Y
和strftime
以这种格式创建日期,但由于某种原因strptime
无法读取它
[1] pry(main)> require 'date'
=> true
[2] pry(main)> format = '%-m/%-d/%Y'
=> "%-m/%-d/%Y"
[3] pry(main)> today = Date.today.strftime(format)
=> "8/5/2018"
[4] pry(main)> Date.strptime(today, format)
ArgumentError: invalid date
from (pry):4:in `strptime'
strtime
是否使用了与strftime
不同的格式键集(ruby文档似乎表明它们是相同的)?还是我在这里遗漏了什么?它们使用相同的格式键,但状态的文档:
与strftime不同,strptime不支持指定标志和宽度
所以问题是那些标志(在本例中是连字符(-)。有点愚蠢,您不能只使用相同的格式说明符来输入日期和输出日期,但事实就是这样,您可以:
Date.strptime(today, format.delete('-'))
问题在于格式!如果将其更改为 %m/%d/%Y ,它将被修复
format = '%m/%d/%Y'
today = Date.today.strftime(format)
Date.strptime(today, format)
#=> Mon, 06 Aug 2018