Rails to_json使用不同的DATE_FORMATS .to_s

Ron*_*ity 3 ruby-on-rails date-format

在我的rails_defaults.rb中有以下内容:

Date::DATE_FORMATS[:default] = '%m/%d/%Y'
Time::DATE_FORMATS[:default]= '%m/%d/%Y %H:%M:%S'
Run Code Online (Sandbox Code Playgroud)

为什么以下结果不同:

ruby-1.9.2-p180 :005 > MyModel.find(2).to_json(:only => :start_date)
 => "{\"start_date\":\"2012-02-03\"}" 

ruby-1.9.2-p180 :006 > MyModel.find(2).start_date.to_s
 => "02/03/2012" 
Run Code Online (Sandbox Code Playgroud)

更重要的是,我该如何to_json使用%m/%d/%Y

Sim*_*tti 10

因为日期的标准JSON格式是,%Y-%m-%d并且没有办法更改它,除非你覆盖Date#as_json(不这样做或你的应用程序将开始行为不端).

请参阅https://github.com/rails/rails/blob/master/activesupport/lib/active_support/json/encoding.rb#L265-273

class Date
  def as_json(options = nil) #:nodoc:
    if ActiveSupport.use_standard_json_time_format
      strftime("%Y-%m-%d")
    else
      strftime("%Y/%m/%d")
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

  • +1 @ simone-carletti,你知道多少? (2认同)