Преобразование Ruby String to Date
Я столкнулся с проблемой в Ruby on Rails. Я хочу преобразовать строку формата Tue, 10 Aug 2010 01:20:19 -0400 (EDT)
в объект даты.
В любом случае я могу это сделать.
Вот что я посмотрел и попробовал следующее: "/p >
Пожалуйста, помогите мне с этим.
Ответы
Ответ 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"]