2012-01-27 135 views
0

我喜歡紅寶石的魔法,但是每隔一段時間你就會遇到一些看起來像是毫不費力的東西。 這是我的問題:Ruby時間包括日期?

我使用MySQL的時間列類型在我的數據庫中存儲一個值作爲時間。 這個商店只是hh:mm:ss值。

後來做比較的時候Ruby會抓取這個值並追加2001-01-01 hh:mm:ss UTC。 (記錄1下面是從我的數據庫中取出並是恰巧有存儲在使用MySQL的時間函數時間屬性從集合中獲得一個ActiveRecord對象)

所以看來我有用comparions唯一的選擇就是使用的strftime?是對的嗎?

(ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin10.8.0]) 

    ruby-1.9.2-p290 :009 > record1.time 
    => 2000-01-01 08:30:00 UTC 

    ruby-1.9.2-p290 :001 > time1 = "08:30:00" 
    => "08:30:00" 
    ruby-1.9.2-p290 :002 > @time_obj1 = Time.parse time1 
    => 2012-01-27 08:30:00 -0700 
    ruby-1.9.2-p290 :003 > @time_obj1.to_s 
    => "2012-01-27 08:30:00 -0700" 
    ruby-1.9.2-p290 :004 > 
+0

重複Q - http://stackoverflow.com/questions/6359978/represent-a-time-with-no-date-in-ruby – gef 2012-01-27 21:14:10

+0

Ruby的時間包括日期,因爲它基於底層操作系統的時間思想,是一個DateTime等價物。數據庫的Timestamp或時間值的特定字段類型的概念是沒有關係的。也許ActiveRecord誤解了字段類型? – 2012-01-27 22:22:52

回答

1

所以看來我有用comparions唯一的選擇就是使用 的strftime?是對的嗎?

這,或者你可以不喜歡

timestring = "#{@time_obj1.hour}:#{@time_obj1.min}:#{@time_obj1.sec}" 

strftime是相當少一些字符,更標準的方式來實現你以後。