如何在Rails中更改项目默认时间格式

时间:2014-11-20 14:56:02

标签: datetime ruby-on-rails-4 active-model-serializers

在我更新Rails之前,API返回的默认时间格式为yyyy-MM-dd'T'HH:mm:ss'Z'。现在它返回yyyy-MM-dd'T'HH:mm:ss:sss'Z'。由于依赖旧时格式的应用程序,我想要将其更改回来。如何更改Time::DateTime' to_s方法返回的PROJECT默认格式?

编辑:

我应该提一下,我开始使用active_model_serializer宝石。不确定这是否有所作为。我的猜测是从Rails 4.0.x更新到4.1.x之后发生了这种变化。另外,我想为项目更改此格式。这种格式在Rails版本之间改变了。 active_model_serializer使用to_s,因此覆盖如何设置此项更有意义。我不知道那是哪里。

3 个答案:

答案 0 :(得分:0)

您可以使用strftime

Time.now.strftime("%Y-%M-%d %H:%m:%S%Z")

您的某个宝石可能会覆盖DateTime to_s方法。您可以使用自己的方法重新覆盖它

答案 1 :(得分:0)

也许您需要这个:

# config/initializers/time_with_zone.rb

module ActiveSupport
  class TimeWithZone
    def as_json(options = nil)
      iso8601
    end
  end
end

答案 2 :(得分:0)

您可以扩充 Ruby 内置的 Date::DATE_FORMATSTime::DATE_FORMATS

DATE_FORMAT = "%m/%d/%Y".freeze
TIME_FORMAT = "#{DATE_FORMAT} %l:%M%P".freeze

format_defaults = {
  default: DATE_FORMAT,
  date_time12: TIME_FORMAT,
  date_time24: "#{DATE_FORMAT} %H:%M",
}.freeze

Date::DATE_FORMATS.merge!(format_defaults)
Time::DATE_FORMATS.merge!(format_defaults)