我正在使用js日曆,它將字符串插入文本字段以提交作爲日期時間值。不知道它是否重要,但現在我正在使用SQLite。如何在Rails中設置日期時間格式
我設置的格式如下(以初始化):
Time::DATE_FORMATS[:default] = '%m/%d/%Y %H:%M'
Time::DATE_FORMATS[:db] = '%m/%d/%Y %H:%M'
這是行不通的,因爲Rails的顯然是驗證使用不同格式的日期。
例如,如果我將其設置如下:
myobject.my_datetime = '06/30/2012 00:00'
它最終爲空(本身由ActiveRecord的生成的SQL查詢其設置爲NULL)。如果我將它設置爲小於或等於12的日期,則日期部分結束正確(但生成的SQL查詢仍然在月份前一天顯示字符串,即在上面的示例中,SQL查詢的字符串爲'30/06/2012 05:00:000000')。
正如你所看到的,即使我將config.time_zone設置爲東部時間,它似乎也會爲UTC(?)增加5個小時。
無論從控制檯還是通過表單提交,行爲都是相同的。
關於我失蹤的任何建議?
UPDATE:
當我遵循JDOE的建議,這樣做:
myobject.my_datetime = Time.strptime('06 /二千〇十二分之三十〇08:00' ,「%M /%d /% Y%H:%M')
生成的查詢現在看起來是正確的(忽略4個小時的時差):
UPDATE "myjoin_table" SET "my_datetime" = '06/30/2012 04:00.000000' .....
,並在數據庫中那樣捲起。
但是,當我重新加載對象時,AR對象中的值被初始化爲零。
我想我只是在我的控制器操作中逐一解析字符串,並手動將參數設置爲update_attributes。這比它應該更難。
我現在得到的配置設置僅用於顯示。我沒有收到用戶的字符串。我只包含足夠的信息來描述問題,通過傳遞一個類似於我的表單正在執行的字符串(續),可以在控制檯上重現此問題。 –
請參閱問題更新。 –
@KenThompson查看UPD的使用示例。 – jdoe