首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >慢性病有任何日期格式的选择吗?(红宝石)

慢性病有任何日期格式的选择吗?(红宝石)
EN

Stack Overflow用户
提问于 2010-02-23 11:12:17
回答 2查看 2.9K关注 0票数 3

我需要告诉慢性病,日期的格式是日-月-年,这有可能吗?我传递给慢性疾病的数据也可能是今天/昨天/2天前的词汇。

目前慢性给我的是2 Dec 2010而不是来自12-02-201012 Feb 2010

我能想到的唯一解决方案是,在将字符串传递给chronic之前,每天和每个月进行交换。

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-28 15:17:41

我今天发现了这个问题,这是在我被问了20个月之后。似乎有一种方法来表示交换月份和天数。只需使用:endian_precedence选项:

:endian_precedence (数组)-默认情况下::中间,:小-默认情况下,慢性将解析"03/04/2011“作为第三个月的第四天。或者,您可以通过将:endian_precedence更改为[:little, :middle]来告诉Chronic将其解析为第四个月的第三天。

这里的例子:

代码语言:javascript
复制
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

希望这能有所帮助!

多里安

票数 16
EN

Stack Overflow用户

发布于 2010-02-23 11:37:57

慢性的输出可以很容易地格式化。chronic.parse返回一个time对象。您可以使用strftime进行这里所描述的格式设置。

代码语言:javascript
复制
puts Chronic.parse('today').strftime('%d %b %Y') #=> 23 Feb 2010

就输入而言,我找不到任何能自动做到这一点的慢性病。操作输入字符串可能是一种方法。

编辑:慢性病有一个内部的pre_normalize,你可以超越..。

要求‘慢性’

代码语言:javascript
复制
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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2317569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档