簡體   English   中英

如何更改 Rails 默認時間格式?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM