12

我正在使用 JBuilder 来呈现我的应用程序的 JSON API 部分的视图。我遇到的问题是我的 DateTimes 是这样呈现的:

“2013-07-02T17:03:18.000Z”

...当我真正想要的是:

“2013-07-02T17:03:18Z”

我不确定这些小数是从哪里来的......

我以典型的 JBuilder 方式渲染该字段:

json.my_datetime_field

我的应用程序中有一个日期格式初始化程序:

Date::DATE_FORMATS[:default] = '%Y/%m/%d %Z'
Time::DATE_FORMATS[:default] = '%Y/%m/%d %H:%M:%S %Z'
Date::DATE_FORMATS[:month_day_year] = '%m-%d-%Y'

但是,这似乎不会影响 JBuilder,这很好。我想要来自我的 API 的 ISO8601 格式。顺便说一句,我在 Rails 4.0.0 final 上。

4

3 回答 3

11

在铁轨下使用?为避免使用浮点数进行编码,请在项目的初始化块上运行此方法

ActiveSupport::JSON::Encoding.time_precision = 0
于 2014-05-14T11:43:42.423 回答
4

我在尝试呈现更适合 iPhone 应用程序的格式时遇到过这种情况。您可以使用该.strftime方法。

json.my_datetime_field(object.timestamp.strftime('%Y/%m/%d %H:%M:%S %Z'))

将创建一个名为 my_datetime_field 的 json 字段

{ "my_datetime_field": timestamp_goes_here  }
于 2013-10-21T04:46:24.827 回答
1

这对我有用。

/view/api/earthquakes/index.json.jbuilder

json.array!(@earthquakes) do |earthquake|
  json.extract! earthquake, :id,
                :name,
                :magnitude,
                :lat,
                :lon,
                :city,
                :region,
                :state,
                :country,
                :usgs_id,
                :usgs_url,
                :usgs_url_detail,
                :num_structures

  json.date(earthquake.date.strftime('%Y-%m-%d %H:%M:%S %Z'))

end
于 2015-04-16T21:19:42.320 回答