Ответ 1
Вы можете использовать метод Date.strptime
, предоставленный в стандартной библиотеке Ruby:
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
.