我有一個模型,用戶和現場這樣expires_at創建Rails3中的應用:如何使用rails3將本地時區的日期保存到db?
t.column :expires_at, :timestamp
在我的數據庫(PostgreSQL的),它具有類型:
timestamp without timezone
問題是,當我打電話:
@user.expires_at = Time.now
@user.save
它被保存到UTC時區的數據庫(我的本地時間是UTC + 1:00,華沙),但我不想那樣。我只想把我的本地時區的時間保存到數據庫中(2011-03-30 01:29:01.766709,而不是2011-03-29 23:29:01.766709)
我可以使用rails3來實現嗎?
小心!如果你有超過一個時區的用戶,這會很快變得混亂。我更願意將所有時間都保存爲數據庫中的UTC,並且只將它們轉換爲非UTC以便在客戶端顯示(您可以將時間從UTC轉換爲在用戶操作系統中使用少量JavaScript設置的時區) 。祝你好運! – 2011-03-30 00:04:17
當我從用戶輸入數據庫查詢呢? ActiveRecord會自動將它轉換爲UTC? – 2011-03-30 00:10:34
這是一個很好的問題,但我懷疑它 - 它必須知道用戶的時區才能夠進行正確的轉換。如果要將用戶提供的日期存儲爲UTC,則可能必須將其轉換爲客戶端(urgh)。我爲我的客戶端轉換使用了[date.js](http://www.datejs.com/),但我只做了顯示 - 我從未接受日期作爲輸入... – 2011-03-30 00:22:57