2

我有从 Rails 2.2.2 迁移到 Rails 3.2.1 的站点。

我现在看到与一个自定义方法调用相关的奇怪日期问题。

我有一个方法以 MM/DD/YYYY 格式返回给定日期

 def clean_date date
    return "00/00/00" if !date or date == ""
    return date.strftime("%m/%d/%Y") if date.class.to_s == "Date"
    return Date.parse(date).strftime("%m/%d/%Y") # assume it's a string
  end

在我迁移到 Rails 3 之后,它停止返回格式正确的日期。它现在返回 MySQL 类型的日期格式

>>> SHIP DATE BEFORE CLEAN: 12/24/2013
>>> SHIP DATE AFTER CLEAN: 2013-12-24

呼叫控制器

require 'date'

[...]

 ## In: 12/24/2013
 existing_ship_date = clean_date(poi.ship_date)
 ## Out: 2013-12-24
 ## Should always return: 12/24/2013

如何修复此方法以使其适用于 Rails 3.2.1?

感谢您的关注

4

2 回答 2

1

尝试使用替代日期解析器。我从这颗宝石中发现了很多价值:

https://github.com/mojombo/chronic

于 2013-05-07T16:55:37.163 回答
0

1.创建这个文件:

rails_app_root_directory/config/initializers/date_formats.rb

2.把你的日期格式放在那里:

Date::DATE_FORMATS[:ship_date] = "%m/%d/%Y"

3.在您的控制器中,根据需要使用它来格式化您的 Date 对象:

Date.today.to_formatted_s(:ship_date)

输出:“05/07/2013”

4.别忘了重启rails!

于 2013-05-07T17:31:49.877 回答