2013-02-15 11 views
9

Questa è una domanda di Ruby (1.9.1)Rubino data e ora in conversione di stringa in volta aggiornato con millisecondi

ho la seguente data e l'ora in una stringa:

29 Sep 2013 12:25:00.367 

prima voglio convertirlo da stringa a data e ora, quindi aggiungere e convertirlo nuovamente nello stesso formato di stringa di precedente.

ho scritto questo codice:

format = "%d %b %Y %H:%M:%S" 
date_time = "29 Sep 2013 22:11:30.195" 
parsed_time = DateTime.strptime(date_time, format) 
puts " new date time is #{parsed_time}" 

quali uscite:

new date time is 2013-09-29T22:11:30+00:00 

non ho visto "195". Ho provato format = "%d %b %Y %H:%M:%S.%3N" e questo dà:

fileOpTest:34:in `strptime': invalid date (ArgumentError) from fileOpTest:34:in `<main>' 
+1

È necessario aggiornare la versione di Ruby, v1.9.1 è vecchio e bug. –

+0

Lo stesso problema si verifica con Ruby 2.1: b = DateTime.current.strftime ("% Y-% m-% d% H:% M:% S.% 3N"); DateTime.strptime (b, "% Y-% m-% d% H:% M:% S.% 6L") produce lo stesso errore –

risposta

15

Questo può essere fatto molto facilmente con il Time class. È possibile aggiungere a un tempo aggiungendo secondi. Quindi utilizzare #strftime

t= Time.parse('29 Sep 2013 12:25:00.367') 
=> 2013-09-29 12:25:00 -0400 
t=t + 10 
=> 2013-09-29 12:25:10 -0400 
t.strftime("%d %b %Y %H:%M:%S.%3N") 
=> "29 Sep 2013 12:25:10.367" 
+0

Salve, ricevo un "metodo non definito' parse 'per Tempo: Classe (NoMethodError) "errore. Che versione Ruby hai? Ho 1.9.1 Grazie Asha –

+1

Ciao, ho aggiunto 'require' time 'e ha funzionato. Grazie mille. –

+0

Si prega di accettare la risposta facendo clic sul segno di spunta a sinistra se Michael è stato in grado di risolvere il problema. –

Problemi correlati