2012-11-06 9 views
12

Próbuję zaimportować niektóre dane z płaskiego pliku i otrzymuję dziwne wyniki. Czy w przypadku importowania nieprzyłączonego czasu do daty pojawia się również data w tym czasie?Czy możesz mieć czas bez daty na szynach?

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

Zgaduję, że nie jest tylko sposobem, aby utrzymać datę sama, ale nie da się utrzymać razem sama pomimo aktywnego rekordu kolumnowej typu: czas. Czy istnieje sposób, aby przechowywać je oddzielnie, takich jak:

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

możesz użyć strftime, ale wynik jest obiektem typu String: 'umieszcza Time.now.strftime ("% I:% M:% S% z ") # =>" 09:33:00 -0400 "' OR 'stawia Time.now.strftime ("% I:% M:% S% Z% z ") # =>" 09:33:00 EDT -0400 "' – MrYoshiji

+1

Wpadłem również na ten problem , i właśnie napisałem kod, aby przekonwertować ciąg czasu, który otrzymujesz, na liczbę całkowitą liczby sekund. Robienie manipulacji sznurkiem jest dość łatwe, tym bardziej, jeśli wiesz, że zawsze ma formę GG: MM. – MrDanA

Odpowiedz

8

Time obiekt w Ruby używa „Unix Time” do przechowywania punktów czasowych jak sekund od 1 stycznia 1970 00:00 UTC. Różne metody, takie jak strftime, jedynie zmieniają format wyjścia, ale nie sposób, w jaki obiekt jest przechowywany wewnętrznie.

Masz więc podjąć decyzję: zachowaj zaimportowane dane jako obiekt czasu i pamiętaj o tym, co zawiera, lub zaimportuj dane jako ciąg znaków, ale zrezygnuj ze wszystkich uroczych, przydatnych funkcji z Time.

Powiązane problemy