Подтвердить что ты не робот

Строка даты синтаксиса в Ruby

У меня есть строка 20120119, которая представляет дату в формате 'YYYYMMDD'.

Я хочу проанализировать эту строку в Ruby-объекте, который представляет Date, чтобы я мог выполнить некоторый базовый расчет даты, например, diff против сегодняшней даты.

Я использую версию 1.8.6 (требование).

4b9b3361

Ответ 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.