Преобразование строки Ruby в дату


я столкнулся с проблемой в Ruby on Rails. Я ищу, чтобы преобразовать строку формата Tue, 10 Aug 2010 01:20:19 -0400 (EDT) в объекте date.

есть ли в любом случае я мог бы это сделать.

вот что я посмотрел и попробовал следующее без успеха:

  1. Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z")
  2. Хронический Парсер
  3. Ruby: конвертировать строку в дату
  4. разбор даты из текста с помощью Руби

пожалуйста, помогите мне с этим.

4 59

4 ответа:

что не так с Date.parse способ?

str = "Tue, 10 Aug 2010 01:20:19 -0400 (EDT)"
date = Date.parse str
=> #<Date: 4910837/2,0,2299161>
puts date
2010-08-10

это, кажется, работает.

единственная проблема здесь-часовой пояс. Если вы хотите дату в часовом поясе UTC, то лучше использовать Time объект, предположим, что у нас есть строка:

str = "Tue, 10 Aug 2010 01:20:19 +0400"
puts Date.parse str
2010-08-10
puts Date.parse(Time.parse(str).utc.to_s)
2010-08-09

Я не мог найти более простой метод для преобразования Time до Date.

Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z")

должно быть:

Date.strptime(updated, '%a, %d %b %Y %H:%M:%S %Z')
str = "Tue, 10 Aug 2010 01:20:19 -0400 (EDT)"
str.to_date
=> Tue, 10 Aug 2010

вы можете попробовать https://rubygems.org/gems/dates_from_string:

найти дату в структуре:

text = "get car from repair 2015-02-02 23:00:10"
dates_from_string = DatesFromString.new
dates_from_string.find_date(text)

=> ["2015-02-02 23:00:10"]