Ruby中的解析日期字符串
问题描述:
我有一个字符串20120119
,它表示格式为'YYYYMMDD'
的日期。Ruby中的解析日期字符串
我想把这个字符串解析成一个代表Date的Ruby对象,这样我就可以做一些基本的日期计算,比如diff与今天的日期。
我正在使用版本1.8.6(要求)。
答
你可以使用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
也是如此。
Date.parse也适用于YYYYMMDD。不需要格式字符串。 – rrhartjr 2012-07-23 17:42:21
解析异常如何? – chrisapotek 2013-07-25 22:54:02
有没有办法检测一个字符串是否会抛出解析异常? – theUtherSide 2016-02-05 21:21:59