Есть ли у хроники какие-либо опции формата даты, которые она анализирует? (Рубин)
Мне нужно сказать хроническому, что формат даты день-месяц-год это возможно? Данные, которые я передаю хроническому, также могут быть словами сегодня / вчера /2 дня назад.
В настоящее время хронический дает мне 2 Dec 2010
вместо 12 Feb 2010
от 12-02-2010
Единственное решение, которое я могу придумать, это поменять день и месяц, прежде чем передать строку в хронический.
require 'chronic'
puts "12-02-2010 = #{Chronic.parse('12-02-2010')}" #should be 12 Feb 2010
puts "yesteday = #{Chronic.parse('yesterday')}" #working ok
puts "Today = #{Chronic.parse('today')}" #working ok
2 ответа
Я нашел этот вопрос сегодня, через 20 месяцев после того, как он был задан. Кажется, есть способ указать, чтобы поменять местами месяцы и дни. Просто используйте :endian_precedence
опция:
: endian_precedence (Array) - по умолчанию: [:middle,:little] - по умолчанию Chronic анализирует "03/04/2011" как четвертый день третьего месяца. В качестве альтернативы вы можете указать Chronic разобрать это как третий день четвертого месяца, изменив
:endian_precedence
в[:little, :middle]
Пример здесь:
Chronic.parse('12-02-2010').strftime('%d %b %Y') #=> 02 Dec 2010
Chronic.parse('12-02-2010', :endian_precedence => [:little, :median]).strftime('%d %b %Y') #=> 12 Feb 2010
Надеюсь это поможет!
Дориан
Вывод хроники может быть легко отформатирован. chronic.parse
возвращает объект времени. Ты можешь использовать strftime
для форматирования, как описано здесь.
puts Chronic.parse('today').strftime('%d %b %Y') #=> 23 Feb 2010
Что касается ввода, я не могу найти ничего в хроническом, что сделает это автоматически. Манипулирование входной строкой - это, вероятно, лучший способ.
Изменить: Хронический имеет внутренний pre_normalize
что вы могли бы переехать..
требуют "хронического"
puts Chronic.parse('12-02-2010').strftime('%d %b %Y') #=> 02 Dec 2010
module Chronic
class << self
alias chronic__pre_normalize pre_normalize
def pre_normalize(text)
text = text.split(/[^\d]/).reverse.join("-") if text =~ /^\d{1,2}[^\d]\d{1,2}[^\d]\d{4}$/
text = chronic__pre_normalize(text)
return text
end
end
end
puts Chronic.parse('12-02-2010').strftime('%d %b %Y') #=> 12 Feb 2010