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

Преобразование Ruby String to Date

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

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

Вот что я посмотрел и попробовал следующее: "/p >

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

4b9b3361

Ответ 1

Что не так с методом 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.

Ответ 2

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

Должно быть:

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

Ответ 3

str = "Tue, 10 Aug 2010 01:20:19 -0400 (EDT)"
str.to_date
=> Tue, 10 Aug 2010

Ответ 4

Вы можете попробовать 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"]