30

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

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

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

4

1 回答 1

77

您可以使用Date.strptimeRuby 标准库中提供的方法:

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方法,其工作方式与 . 上的 parse 方法类似Date。也是如此strptime

于 2012-07-23T17:32:30.260 回答