2016-04-13 9 views
0

stime özniteliğine sahip rayları kullanarak bir veritabanı oluşturdum (başlangıç ​​zamanına bakın). Onun türü Time. Ben bir rekor eklendiğinde: Ben sadece zaman değil, tarih istiyorumRails'de zaman veri türü

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

: olarak

stime = "10:10" 

o eklenmiştir. Time ve DateTime arasındaki fark olduğunu düşündüm. Sorunun ne olduğunu bana söyleyebilir mi?

cevap

3

Belgelerin belirttiği gibi değil.

Saat, tarih ve saatlerin bir özetidir. Saat, içersinde Epoch, Ocak 1, 1970 00:00 UTC'den bu yana fraksiyona sahip saniye sayısı olarak saklanır.

Orada yapabileceğiniz birkaç şey vardır: bir dize olarak

  • Store'dan ve regex doğrulama yapmak.
  • Postgres kullanıyorsanız ve buna bağlı olarak dikkatli değilseniz, time türünü kullanabilirsiniz. Bu gibi şeyler yapmanıza izin verir: YourModel.where("stime > '13:00:00'").
  • Günün saatini gece yarısından bu yana saniye cinsinden saklayın. Bu, veri sorgulamak için oluşturma ve kapsamlar için bazı yardımcı yöntemler eklemenizi gerektirecektir. ActiveSupport'un extension on numeric values yardımcı programını bulabilirsiniz.
2

bir tamsayı sütununda gece yarısından itibaren saniye olarak zaman depoluyor, Uzbekjon üçüncü noktayı örneklemek için, bu sorunu ele almanın bir yolu: Daha sonra bu değer almak ve ayrıştırmak için

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

gerektiğinde günün saati:

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

Yardım edin!