Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby数据解析_Ruby_Date - Fatal编程技术网

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 =

我确信我遗漏了一些明显的东西,但是——我正在尝试解析一个类似“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 = 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