2016-04-13 33 views
0

我使用rails的stime屬性(指開始時間)創建了一個數據庫。它的類型是Time。當我添加了一個紀錄:Rails中的時間數據類型

stime = "10:10" 

它已被添加爲:

"stime":"2000-0101T10:10:00.000Z" 

我只希望時間,而不是日期。我認爲這是TimeDateTime之間的差異。誰能告訴我問題是什麼?

回答

3

正如文檔所述,事實並非如此。

時間是日期和時間的抽象。時間在內部存儲爲 ,表示自世界時間1月1日 1970 00:00 UTC以來的分數秒數。

有幾件事情可以做:

  • 存儲作爲一個字符串和正則表達式做驗證。
  • 如果您使用的是Postgres,不介意依賴它,可以使用time類型。這可以讓你做這樣的事情:YourModel.where("stime > '13:00:00'")
  • 從午夜開始以秒爲單位存儲時間。這將需要你添加一些輔助方法來創建和查詢數據的範圍。你可能會發現ActiveSupport的extension on numeric values有幫助。
2

處理這個問題,爲了舉例Uzbekjon的第三點,是存儲時間爲秒從凌晨起,整列方式一:

stime = Time.now 
# => 2016-04-13 10:58:13 -0700 
seconds = stime.seconds_since_midnight.to_i 
# => 39493 

然後你可以檢索此值,並將其解析到當需要的時候:

time = Time.at(seconds).utc 
# => 1970-01-01 10:58:13 UTC 
result = time.strftime("%I:%M") 
# => "10:58" 

希望它有幫助!