我知道这听起来像是一个重复的问题,但我认为这种情况有所不同。如果确实是这样,我会删除这篇文章。
我有一个字符串,其中包含以下格式的日期:星期六,6月20日
我想将其解析为Date变量,然后将其递增到第二天。
到目前为止,我已经完成了
text = "Thu, Jun. 20"
date = Date.new
date = Date.strptime(text, '{%a, %m, %d}')
但是这给了我以下错误:
invalid date (ArgumentError)
我从Ruby: convert string to date
得到了这个想法到目前为止,我所看到的所有答案都在解析包含完整信息的字符串(整个月或一周中的某一天)。我正在努力做甚么可能吗?如果没有任何关于解决方案的建议将是最受欢迎的。
答案 0 :(得分:4)
您使用了错误的日期格式。解析后,您可以使用加号或减号运算符来更改日期。
参考: http://www.ruby-doc.org/stdlib-1.9.3/libdoc/date/rdoc/DateTime.html#method-i-strftime
%a - 缩写名称(“太阳”)
%b - 缩写的月份名称(“Jan”)
%d - 每月的某天,零填充(01..31)
<强>代码:强>
1.9.3p392 :003 > require 'date'
=> true
1.9.3p392 :008 > date = Date.strptime(text, '%a, %b. %d')
=> #<Date: 2013-06-20 ((2456464j,0s,0n),+0s,2299161j)>
1.9.3p392 :009 > date + 1
=> #<Date: 2013-06-21 ((2456465j,0s,0n),+0s,2299161j)>
1.9.3p392 :010 > date - 1
=> #<Date: 2013-06-19 ((2456463j,0s,0n),+0s,2299161j)>
答案 1 :(得分:2)
为了满足您的需求 我想将其解析为Date变量,然后将其递增到第二天。 我在下面尝试过:
require 'date'
d = Date.parse("Thu, Jun. 20")
# => #<Date: 2013-06-20 ((2456464j,0s,0n),+0s,2299161j)>
d.to_s # => "2013-06-20"
d.next.to_s # => "2013-06-21"