Как я могу преобразовать «Сб 6 ноября 05:48:16 +0000 2010» в «11 -06-2010» в Ruby? - PullRequest
2 голосов
/ 08 ноября 2010

Как я могу конвертировать "Sat Nov 06 05:48:16 +0000 2010" в '11-06-2010' в Ruby?Я пробовал

Date.strptime("Sat Nov 06 05:48:16 +0000 2010", '%m-%d-%Y')

, но я получаю эту ошибку:

ArgumentError (invalid date):
  /Users/ben/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/date.rb:1688:in `new_by_frags'
  /Users/ben/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/date.rb:1713:in `strptime'

Я использую ruby ​​1.9.2p0 (версия 2010-08-18 29036).

Что я делаю не так?Спасибо за чтение.

Ответы [ 2 ]

6 голосов
/ 08 ноября 2010

При прочтении документации ваше использование strptime может быть неправильным.Кажется, что второй аргумент описывает формат первого аргумента, что приводит к очень строгому анализу первого аргумента.

Таким образом, вы можете явно записать формат вашего первого аргумента во второй, и вы должнывсе будет в порядке.

Гораздо более простым решением может быть использование Date.new.Тогда Date.strftime должен дать вам именно то, что вы ищете.

irb(main):001:0> require "date"
=> true
irb(main):002:0> Date.new("Sat Nov 06 05:48:16 +0000 2010").strftime('%m-%d-%Y')
=> "11-06-2010"
1 голос
/ 08 ноября 2010
require 'time'
Time.parse("Sat Nov 06 05:48:16 +0000 2010").strftime('%m-%d-%Y') # => "11-05-2010"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...