Reputation: 3659
I'm using JBuilder to render the views of the JSON API part of my application. The problem I'm running into is that my DateTimes are being rendered like this:
"2013-07-02T17:03:18.000Z"
...when what I really want is this:
"2013-07-02T17:03:18Z"
I'm not sure where those decimals are coming from...
I'm rendering the field in the typical JBuilder way:
json.my_datetime_field
I have a date format initializer in my app:
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'
However, this doesn't seem to impact JBuilder, and that is good. I want ISO8601 format coming from my API. I'm on Rails 4.0.0 final, by the way.
Upvotes: 12
Views: 4517
Reputation: 21
This work for me.
/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
Upvotes: 1
Reputation: 126
using under rails? to avoid encode with float, run this method on initialize block on your project
ActiveSupport::JSON::Encoding.time_precision = 0
Upvotes: 11
Reputation: 8006
I've experienced this while trying to render a format more amenable to iPhone applications. You could use the .strftime
method.
json.my_datetime_field(object.timestamp.strftime('%Y/%m/%d %H:%M:%S %Z'))
will create a json field called my_datetime_field
{ "my_datetime_field": timestamp_goes_here }
Upvotes: 4