我正在使用本指南http://blog.nicoschuele.com/posts/cheatsheet-to-set-app-wide-date-and-time-formats-in-rails,但它似乎无法正常工作。
目前,每当我发出JSON请求并获取数据时,created_at
和其他时间字段都会显示iso8601
格式。
格式的示例是2014-10-23T00:35:14.800Z
。我更喜欢像Sun, 3 Nov 2013 14:22:18 -0700
我做了上面的指南要做的事情,但是当我重新启动服务器并再次触发请求时,JSON仍然以iso8601
格式返回数据。
我该如何解决这个问题?
答案 0 :(得分:1)
我不推荐它,但您可以按照此链接的要求将其设置为Rails:http://blog.nicoschuele.com/posts/cheatsheet-to-set-app-wide-date-and-time-formats-in-rails
我会告诉你我用于html DateTime转换的内容。我没有JSON答案,但我希望这能给你找到你想要的答案。我同意 Nils Landt
您不希望更改API中的时间格式。将其保留为ISO 8601,并在客户端进行更改。方式减少麻烦。
这是我放入控制器的内容:
before_action :correct_datetime, only: [:create, :update]
def correct_datetime
params['event']['starts_at'] = DateTime.strptime(params['event']['starts_at'],'%m/%d/%Y %l:%M %p') unless params['event'].try {|i| if i.try(:has_key?, 'starts_at'); i['starts_at'].empty?; else; true; end }
params['event']['ends_at'] = DateTime.strptime(params['event']['ends_at'],'%m/%d/%Y %l:%M %p') unless params['event'].try {|i| if i.try(:has_key?, 'ends_at'); i['ends_at'].empty?; else; true; end }
end
在我看来,我正在使用Bootstrap DateTimePicker来处理某些文字区域。
Starts at: <%= f.text_field :starts_at, value: (f.object.starts_at.strftime('%m/%d/%Y %l:%M %p') if f.object.starts_at), class: 'form-control', style: 'width:300px;' %>
Ends at: <%= f.text_field :ends_at, value: (f.object.ends_at.strftime('%m/%d/%Y %l:%M %p') if f.object.ends_at), class: 'form-control', style: 'width:300px;' %>
要允许日期时间选择器工作,我在 event.js.coffee CoffeeScript文件中使用以下内容:
$ ->
$("#event_starts_at").datetimepicker()
$("#event_ends_at").datetimepicker()
return
我很抱歉我没有这方面的JSON结果。但是我已经为您提供了输入和输出格式化方法来完成您所寻求的内容。
要从数据库转换DateTime对象,请使用strftime
。要将其格式化以保存在数据库中,请使用strptime
。