2011-09-14 24 views

Respuesta

18

yo primero analizar la cadena con Time#strptime y luego la salida con Time#strftime. Esto asegura un control estricto con su formato original también.

require 'time' 
Time.strptime("10pm", "%I%P").strftime("%H:%M") 
=> "22:00" 
+0

+1 para "requerir" tiempo "", que también agrega un método de análisis a la clase de tiempo (si no es deseable la rigurosidad). – steenslag

0

¿Estás diciendo que quieres las 11 y las 10 p.m. y luego la capacidad para las 11:00 y las 22:00 o quieres cómo mostrar las 11:00 y las 22:00 en lugar de las 11:00 y las 22:00?

si es la segunda pregunta aquí:

%H - Hour of the day, 24-hour clock (00 to 23).

#!/usr/bin/ruby -w 
time = Time.new 

puts time.to_s 
puts time.ctime 
puts time.localtime 
puts time.strftime("%H:%M") 

si es la primera pregunta dice:

%I Hour of the day, 12-hour clock (01 to 12).

#!/usr/bin/ruby -w 
time = Time.new 
timeSwitch = 1 

if (timeSwitch == 1) 
    puts time.strftime("%H:%M") 
else 
    puts time.strftime("%I:%M") 
end 

Lo siento tenía Perl y Ruby mixta en la sintaxis

+0

He visto las banderas% H y% I en strftime(). No estoy tratando de formatear la hora actual. Tengo una cadena con '10 pm' y me gustaría convertirla a '22: 00 '. Gracias por su rápida respuesta. – paniwani

+0

Simplemente haga time_string + 12 = convertedTime por lo tanto 'time = 10 pone el tiempo + 12 = 22' –

3

Su pregunta no está clara, pero parece que tiene una cadena "10pm", y necesita (1) capturarla como una hora, y (2) representar esa hora en formato de 24 horas. Yo lo haría así. En primer lugar, gem install chronic, a continuación, escribir un guión como este:

require 'chronic' 
t = Chronic.parse('10pm') 
p t.strftime("%H:%M") 

devoluciones "22:00" clase

11

El tiempo no tiene ningún método de análisis, pero tiene DateTime.

require 'date' 
DateTime.parse("11pm").strftime("%H:%M") #=> "23:00" 
+1

¡Perfecto! Hice erróneamente DateTime.parse ("11pm"). To_time.strftime ("% H:% M") antes. ¡Gracias! – paniwani

Cuestiones relacionadas