我正在創建一個時間物件,我用它來收集過去 24 小時的所有資訊,創建顯示當前時間的物件沒有問題。但我不確定如何在不附加時區的情況下將其設定為過去 24 小時。
def set_time
@past_time = Time.now.to_s(:db) - 1.days
end
預期輸出格式:
"2021-11-29 09:15:17"
結果:
undefined method `-' for "2021-11-29 10:19:46":String
uj5u.com熱心網友回復:
當您使用 轉換Time.now為字串時,您正在從字串物件中減去時間to_s。
而不是你可以這樣做
(Time.new - 1.days).to_s(:db)
注意:您將獲得多種方法來完成這些導軌。這樣做可以提高代碼的可讀性和對代碼的理解。
例子:
DateTime.now.days_ago(1)
uj5u.com熱心網友回復:
我能想到的最簡單的方法是:
24.hours.ago.to_s(:db)
請注意,在這種情況下,回傳的時間將默認為 UTC。
uj5u.com熱心網友回復:
您可以DateTime#advance從 ActiveSupport使用:
Time.current.advance(hours: -24)
# or
Time.current.advance(days: -1)
請注意,在使用 DST 的時區中,一天并不總是 24 小時,因此兩者實際上并不等效。您還可以使用ActiveSupport::Duration猴子補丁到 Integer 的方法:
24.hours.ago
1.day.ago
不過,這始終使用您的默認時區。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/370159.html
