簡體   English   中英

日期在ActiveRecord中從rails 2.3轉換為3.2

[英]Date converion from rails 2.3 to 3.2 in ActiveRecord

我正在從rails 2.3升級到3.2,我在使用Date轉換時遇到問題。

在rails 2.3中,日期轉換默認格式為mm / dd / yyyy,當我將此格式的字符串分配給active_record模型時,它會正確轉換日期。 例如

我有一個用戶對象(active_record對象)和

在軌道2.3

user.registered_on = "10/03/2013" #=> Oct 3, 2013

但在rails 3.2中也是如此

user.registered_on = "10/03/2013" #=> March 10, 2013

如何解決這個問題?

我嘗試在其中一個初始化程序文件中設置Date :: DATE_FORMATS [:default] ='%m /%d /%Y',但這沒有任何好處。

我甚至為日期設置了語言環境,但這不起作用。

重現此問題的一個完美方法是:

  1. 創建兩個應用程序,一個在rails 2.3.x版本中,另一個在rails 3.2.x版本中。

  2. 使用至少一個日期時間字段在每個應用程序中創建一個模型。

  3. 為這兩個應用程序創建和遷移數據庫。

  4. 在每個應用程序中從終端轉到rails控制台。

  5. 創建一個active_record模型對象,並將此“10/3/2013”​​字符串分配給datetime字段,並查看結果都是不同的日期。

我只需要一個解決方案,如何修復此日期或日期時間轉換並使其與rails 2.3相同

gem“american_date”解決了這個問題。

https://github.com/jeremyevans/ruby-american_date

我猜你已經升級了ruby版本?

$ ruby --version
ruby 1.8.7
$ ruby -r date -e "puts Date.parse('10/3/2013').month"  
10

$ ruby --version
ruby 1.9.3p327
$ ruby -r date-e "puts Date.parse('10/3/2013').month"  
3

參見Ruby 1.87 vs 1.92 Date.parse

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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