我有一个字符串20120119
,它代表'YYYYMMDD'
格式的日期。
我想将此字符串解析为表示Date的Ruby对象,以便我可以进行一些基本的日期计算,例如对今天的日期进行差异。
我使用的是1.8.6版(要求)。
答案 0 :(得分:65)
您可以使用Ruby标准库中提供的Date.strptime
方法:
require 'date'
string = "20120723"
date = Date.strptime(string,"%Y%m%d")
或者,正如评论中所建议的那样,您可以使用Date.parse
,因为在这种情况下启发式工作正常:
require 'date'
string = "20120723"
date = Date.parse(string)
如果日期无效,两者都会引发ArgumentError
:
require 'date'
Date.strptime('2012-March', '%Y-%m')
#=> ArgumentError: invalid date
Date.parse('2012-Foo') # Note that '2012-March' would actually work here
#=> ArgumentError: invalid date
如果您还想表示小时,分钟等,请查看DateTime。 DateTime还提供parse
方法,其作用类似于Date
上的解析方法。 strptime
也是如此。