Преобразование строки Ruby в дату
я столкнулся с проблемой в Ruby on Rails. Я ищу, чтобы преобразовать строку формата Tue, 10 Aug 2010 01:20:19 -0400 (EDT)
в объекте date.
есть ли в любом случае я мог бы это сделать.
вот что я посмотрел и попробовал следующее без успеха:
Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z")
- Хронический Парсер
- Ruby: конвертировать строку в дату
- разбор даты из текста с помощью Руби
пожалуйста, помогите мне с этим.
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')
вы можете попробовать 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"]