2012-11-06 9 views
12

Sto cercando di importare alcuni dati da un file flat e sto ottenendo alcuni risultati strani. Quando si importa un'ora non assegnata a una data, perché viene inserita una data anche in questo momento?Puoi avere un tempo senza una data in binari?

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

Sto indovinando che c'è solo un modo per mantenere la data di per sé, ma c'è modo di mantenere il tempo da solo, nonostante il record della colonna di tipo attivo: il tempo. Esiste un modo per tenerli separati come ad esempio:

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

è possibile utilizzare strftime ma l'output è un oggetto String: 'inserisce Time.now.strftime ("% I:% M:% S% z ") # =>" 09:33:00 -0400 "' O 'inserisce Time.now.strftime ("% I:% M:% S% Z% z ") # =>" 09:33:00 EDT -0400 "' – MrYoshiji

+1

Ho eseguito anche questo problema e ho appena scritto il codice per convertire la stringa temporale in cui stai entrando in un valore intero del numero di secondi. Fare la manipolazione delle stringhe è abbastanza facile, ancor più se sai che è sempre nella forma HH: MM. – MrDanA

risposta

8

L'oggetto Time in Ruby utilizza "Unix Time" per memorizzare i punti temporali come secondi dal 1 Gen 1970 00:00 UTC. Vari metodi come strftime cambiano semplicemente il formato dell'output, ma non il modo in cui l'oggetto viene archiviato internamente.

Quindi, è necessario prendere una decisione: conservare i dati importati come oggetto Time e prestare attenzione a ciò che effettivamente contiene o importare i dati come stringa, ma rinunciare a tutte le funzionalità utili e piacevoli di Time.

Problemi correlati