我确定我遗漏了一些明显的东西,但是 - 我正在尝试解析像“8/5/2018”这样的日期(以 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'
strptime
使用的格式键集是否与 strftime
不同(ruby 文档似乎表明它们是相同的)?还是我在这里遗漏了其他东西?
最佳答案
它们使用相同的格式键,但是 strptime
的文档状态:
strptime does not support specification of flags and width unlike strftime.
所以问题是那些标志(在这种情况下是连字符 (-)。有点愚蠢,你不能只使用相同的格式说明符来输入日期,以及输出它们,但它就是这样,你可以这样做:
Date.strptime(today, format.delete('-'))
关于Ruby 日期解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51698613/