更改Rails3中日期输入的格式



我在Rails3中使用text_field作为日期输入,并希望将日期格式化为mm/dd/yyyy

虽然我已经找到了一些以这种方式显示日期的解决方案,但我还没有找到一种可行的方法来接受这种格式作为输入。

问题是,在像"09/05/2011"这样日期不明确的情况下,Rails将其解释为"5月9日",而不是"9月5日"

让Rails3根据mm/dd/yyyy格式解释这些类型的输入的最佳方法是什么?

希望你的目标受众只是美国人,因为这种日期格式在美国以外的很多地方都不使用。

无论如何,您只想验证字符串的格式:

validates_format_of :the_date, :with => /^[0-9]{2}/[0-9]{2}/[0-9]{4}$/

这是一个非常基本的模式,它验证字符串的格式,但不验证分隔符之间的实际值。如果你想这样做,你最好的办法可能只是尝试用Date#strptime解析日期,看看它是否解析。

我遇到一个问题,用户在文本字段中填写月/日/年。但由于新的Date解析,Rails承认他们输入了天/月/年。我通过修补Date解决了这个问题_在Rails中解析。因此,我在initializers文件夹中添加了一个date_patch.rb。

require 'time'
class Date
  class << self
    alias :org_parse :_parse
    # switch the month and day field for expecting US dates
    def _parse(str, comp=true)
      str = str.sub(/(d{1,2})/(d{1,2})/(d{1,4})/, '2/1/3')
      org_parse str, comp
    end
  end
end

相关内容

  • 没有找到相关文章

最新更新