【问题标题】:How to format a date in Ruby on Rails with alternative date format? [duplicate]如何使用替代日期格式在 Ruby on Rails 中格式化日期? [复制]
【发布时间】:2014-08-01 14:31:08
【问题描述】:

我有一个旧数据库,其中每个用户的首选 date_format 可以具有以下值之一:

dd.mm.yy
dd/mm/yy
mm/dd/yy

我注意到这种格式可以很好地与一些 javascript 函数配合使用(这可能是他们选择它的原因)。

但是如何在 Ruby on Rails 中使用这些格式来格式化日期呢?

我想使用date.strftime("dd.mm.yy") 之类的东西,但strftime 不接受上述三种格式中的任何一种。

如何做到这一点?

感谢您的帮助。

【问题讨论】:

标签: ruby-on-rails ruby


【解决方案1】:

如果我正确地回答了您的问题,您只需修改格式字符串,以便strftime 可以识别它。例如,使用gsub:

def my_date_format(date, format)
  strftime_format = format.gsub(/([dmy])\1/, 'dd' => '%d', 'mm' => '%m', 'yy' => '%Y')
  date.strftime(strftime_format)
end

require 'date'
my_date_format(Date.today, 'dd.mm.yy')
# => "01.08.2014"

【讨论】:

    【解决方案2】:

    它不接受它,因为dd.mm.yy 不是strftime 格式。正确的模式是"%d.%m.%y""%d/%m/%y""%m/%d/%y"

    Date.today.strftime("%d.%m.%y") #=> "01.08.14"
    Date.today.strftime("%d/%m/%y") #=> "01/08/14"
    Date.today.strftime("%m/%d/%y") #=> "08/01/14"
    

    所以你需要简单地转换你的模式,例如“dd.mm.yy”:

    "dd.mm.yy".gsub('dd','%d').gsub('mm', '%m').gsub('yy', '%y') #=> "%d.%m.%y"
    

    你可以在strftime使用它:

    Date.today.strftime("dd.mm.yy".gsub('dd','%d').gsub('mm', '%m').gsub('yy', '%y')) #=> "01.08.14"
    

    【讨论】:

      【解决方案3】:

      请参考http://apidock.com/ruby/DateTime/strftime

      您需要使用%d等。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-09
        • 2019-01-29
        • 2013-07-10
        • 1970-01-01
        • 2014-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多