[英]How to change Rails default time format?
我正在使用本指南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
格式返回數據。
我該如何補救?
我不推薦它,但您可以按照您在此鏈接中的要求將其設置為 Rails 寬: http : //blog.nicoschuele.com/posts/cheatsheet-to-set-app-wide-date-and-time-軌道格式
我會給你我用於我的 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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.