2012-11-06 23 views
12

Bazı verileri düz bir dosyadan içe aktarmaya çalışıyorum ve bazı garip sonuçlar aldım. Bir tarihe ilişik olmayan bir süreyi içe aktarırken, neden bu süreye eklenmiş bir tarih alabilirim?Raylarda tarihsiz bir zamanınız olabilir mi?

1.9.3-p286 :008 > v.arrival_time = Time.parse("10:10") 
=> 2012-11-06 10:10:00 -0400 

Ben sadece kendisi tarafından tarihini tutmanın bir yolu, ancak etkin plak kolon tipi rağmen kendisi tarafından zaman tutmak için hiçbir yolu olduğunu tahmin ediyorum: zaman.

1.9.3-p286 :002 > Date.parse("JAN 01 2000") 
=> Sat, 01 Jan 2000 
+0

strftime'yi kullanabilirsiniz, ancak çıktı bir String nesnesidir: 'Time.now.strftime koyar ("% I:% M:% S% z ") # =>" 09:33:00 -0400 " VEYA ', Time.now.strftime koyar ("% I:% M:% S% Z% z ") # =>" 09:33:00 EDT -0400 "' – MrYoshiji

+1

Bu soruna da girdim ve ben sadece aldığınız zaman dizesini saniye sayısının bir tamsayı değerine dönüştürmek için kod yazdım. Dize manipülasyonu yapmak oldukça kolaydır, daha çok HH: MM formunda olduğunu biliyorsanız. – MrDanA

cevap

8

Ruby Time nesne 1 Ocak 1970 00:00 UTC beri saniye cinsinden zamansal noktalarını saklamak için "Unix Time" kullanır: gibi onları ayrı tutmak için bir yol var mı. strftime gibi çeşitli yöntemler, yalnızca çıktının formatını değiştirir, ancak nesnenin dahili olarak nasıl saklanacağını değil.

Yapmanız gereken bir kararınız var: İçe aktarılan verilerinizi bir Zaman nesnesi olarak saklayın ve gerçekte ne içerdiğine dikkat edin veya verilerinizi bir dize olarak içe aktarın, ancak Time'un tüm güzel ve kullanışlı özelliklerini kullanın.

İlgili konular