Преобразовать текстовую строку в любое допустимое время в формате Ruby - PullRequest
1 голос
/ 31 января 2011

У меня есть следующая строка даты "Понедельник 31 января".

Есть ли способ преобразовать это в допустимое время, отформатированное в Ruby, чтобы я мог преобразовать его во что-то другое?


Как я могу разобрать его в том случае, еслидругой язык, например на испанском "Lunes 31 Enero"?

Ответы [ 4 ]

5 голосов
/ 31 января 2011

Как я мог разобрать его, если он был на другом языке, то есть на испанском "Lunes 31 Enero"?

Обычно я бы сказал, что Chronic gem - лучший выбор для гибкого анализа даты и времени. Бросание на разных языках делает эту проблему другой, потому что библиотеки ориентированы на английский.

Это означает возврат к Date.parse. Заскочив в IRB у меня был сюрприз:

ruby-1.9.2-p136 :001 > require 'date'
 => true 
ruby-1.9.2-p136 :002 > puts Date.parse('Lunes 31 Enero')
2011-01-31

Итак, Date.parse уже испанского языка.

Если это не так, возможно, можно переопределить константы даты и месяца, чтобы помочь ему:

require 'date'

Date::MONTHNAMES      = [nil] + %w( Enero Febrero Marzo Abril Mayo Junio Julio Agosto Septiembre Octubre Noviembre Diciembre )
Date::DAYNAMES        = %w( Lunes Martes Miércoles Jueves Viernes Sábado Domingo )
Date::ABBR_MONTHNAMES = [nil] + %w( Ene Feb Mar Abr May Jun Jul Ago Sep Oct Nov Dic )
Date::ABBR_DAYNAMES   = %w( Lun Mar Mié Jue Vie Sáb Dom )

Я не проверял это, поскольку он уже работает, не вмешиваясь ни в какие вещи, но для других, не поддерживаемых языков, может быть целесообразным экспериментом изменить значения и посмотреть, что происходит.

0 голосов
/ 31 января 2011

Date.parse отлично работает:

$ irb
>> d = Date.parse('Monday 31 January')
=> #<Date: 4911185/2,0,2299161>
>> d.year
=> 2011
>> d.month
=> 1
>> d.day
=> 31
0 голосов
/ 31 января 2011
string = "Monday 31 January"
date = Date.parse(string)
0 голосов
/ 31 января 2011

Кажется, что Date.parse(string) будет работать для вас.Когда передается пример строки, он возвращает Mon, 31 Jan 2011 как объект Date.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...