Как мне преобразовать строку «5 апреля 2011» в объект даты в Ruby 1.9.2? - PullRequest
2 голосов
/ 07 апреля 2011

Я совершенно уверен, что это тривиально, но, судя по всему, я не могу найти ссылку.

Любая помощь приветствуется.

Ответы [ 4 ]

5 голосов
/ 07 апреля 2011

Использование Дата # анализ

ruby-1.9.2-p136 :008 > d = Date.parse("5 April 2011")
 => Tue, 05 Apr 2011 
ruby-1.9.2-p136 :009 > d.class
 => Date 

Теперь вы можете делать такие вещи, как:

ruby-1.9.2-p136 :018 > d.strftime("%d-%m-%Y")
 => "05-04-2011" 
4 голосов
/ 07 апреля 2011

Помимо Date.parse есть также Date.strptime, обратная strftime:

Date.strptime('5 April 2011', '%d %B %Y')

Но Date.parse и Date.strptime оба безумно медленны (strptime чуть меньше,но все равно очень плохо).Попробуйте использовать home_run , если вы собираетесь делать что-то большее, чем случайный вызов.home_run является заменой для классов Date и DateTime.

2 голосов
/ 07 апреля 2011
>> date = Date.parse('5 april 2011')
=> #<Date: 2011-04-05 (4911313/2,0,2299161)>
>> date.strftime("%D")
=> "04/05/11"
0 голосов
/ 07 апреля 2011

Если вы не доверяете Date.parse, чтобы волшебным образом сделать это правильно (я, конечно, не верю этому), я рекомендую вам использовать Date.strptime, чтобы точно указать формат, который он должен анализировать:

require 'date'
Date.strptime "5 April 2011", '%d %B %Y'
#=> #<Date: 2011-04-05 (4911313/2,0,2299161)>

Коды, которые вы используете для указания формата, в основном совпадают с Time#strftime.

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