在Ruby中解析Date字符串

Kev*_*vin 28 ruby ruby-1.8

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

我想将这个字符串解析为一个代表Date的Ruby对象,这样我就可以做一些基本的日期计算,比如今天的日期差异.

我使用的是1.8.6版本(要求).

rob*_*tus 68

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

require 'date'
string = "20120723"
date = Date.strptime(string,"%Y%m%d")
Run Code Online (Sandbox Code Playgroud)

或者,正如评论中所建议的那样,您可以使用Date.parse,因为在这种情况下启发式工作正常:

require 'date'
string = "20120723"
date = Date.parse(string)
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

如果您还想表示小时,分钟等,则应查看DateTime.DateTime还提供了一个parse与解析方法类似的方法Date.同样的道理strptime.

  • Date.parse也适用于YYYYMMDD.不需要格式字符串. (2认同)
  • 解析异常怎么样? (2认同)