我需要告诉慢性病,日期的格式是日-月-年,这有可能吗?我传递给慢性疾病的数据也可能是今天/昨天/2天前的词汇。
目前慢性给我的是2 Dec 2010而不是来自12-02-2010的12 Feb 2010
我能想到的唯一解决方案是,在将字符串传递给chronic之前,每天和每个月进行交换。
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发布于 2011-10-28 15:17:41
我今天发现了这个问题,这是在我被问了20个月之后。似乎有一种方法来表示交换月份和天数。只需使用:endian_precedence选项:
:endian_precedence (数组)-默认情况下::中间,:小-默认情况下,慢性将解析"03/04/2011“作为第三个月的第四天。或者,您可以通过将
:endian_precedence更改为[:little, :middle]来告诉Chronic将其解析为第四个月的第三天。
这里的例子:
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希望这能有所帮助!
多里安
发布于 2010-02-23 11:37:57
慢性的输出可以很容易地格式化。chronic.parse返回一个time对象。您可以使用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 2010https://stackoverflow.com/questions/2317569
复制相似问题