繁体   English   中英

在Ruby中将字符串解析为日期

[英]Parsing a string to a date in Ruby

我知道这听起来像是一个重复的问题,但我认为这种情况有所不同。 如果确实如此,我将删除该帖子。

我有一个包含以下格式的日期的字符串:6月20日,星期四

我想将其解析为Date变量,然后将其递增到第二天。

到目前为止,我已经完成了

text = "Thu, Jun. 20"
date = Date.new
date = Date.strptime(text, '{%a, %m, %d}')

但这给了我以下错误:

invalid date (ArgumentError)

我的想法来自: Ruby:将字符串转换为日期

到目前为止,我所看到的所有答案都在解析包含完整信息(完整的月份或一周中的一天)的字符串。 我要做什么甚至有可能吗? 如果没有,关于解决方法的任何建议将不胜感激。

您使用了错误的日期格式。 解析后,可以使用加号或减号来更改日期。

参考: http : //www.ruby-doc.org/stdlib-1.9.3/libdoc/date/rdoc/DateTime.html#method-i-strftime

a-缩写名称(``Sun'')

%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)> 

为了满足您的需求, 我想将其解析为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"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM