在Ruby中解析Date字符串

时间:2012-07-23 17:25:40

标签: ruby ruby-1.8

我有一个字符串20120119,它代表'YYYYMMDD'格式的日期。

我想将此字符串解析为表示Date的Ruby对象,以便我可以进行一些基本的日期计算,例如对今天的日期进行差异。

我使用的是1.8.6版(要求)。

1 个答案:

答案 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也是如此。