2011-06-15 15 views
14

¿Hay alguna forma de representar un tiempo en ruby ​​sin tener una fecha adjunta? Estoy haciendo una aplicación de seguimiento de tiempo y solo necesito tiempos de entrada/salida, hay una columna separada para la fecha.Representar un tiempo sin fecha en ruby ​​

El tipo de datos de tiempo de MySQL almacena solo el tiempo, pero en Rails vuelve el 1 de enero de 2000, más allá del tiempo que haya.

¿Debo ignorar la parte de la fecha o hay una forma de eliminarla?

Respuesta

9

No hay forma de eliminarlo, because:

de tiempo se almacena internamente como el número de segundos con la fracción ya que el UTC Época 1 DE ENERO, 1970 00:00.

Sólo formatearlo como esto:

t = Time.now 
t.strftime("at %I:%M%p") 
+0

Sé que puedo formatearlo así, estoy más preocupado por la resta y tener dos fechas diferentes. – loosecannon

+2

Simplemente tendrá que manejarlo manualmente utilizando t.hour, t.min, t.sec, etc. según sus requisitos de precisión. ¿Qué sucede cuando el tiempo es a las 23:00 y el tiempo de salida es a la 01:00? – sml

+0

si eso sucede, pueden ingresar dos entradas, Ningún cuerpo aquí funciona esas horas, por lo que no es un problema en este momento. Pero sí, ay, esperaba que fuera solo un apoyo nativo de eso. – loosecannon

44

Nosotros sólo momentos de tiendas sin fechas unidos como minutos desde la medianoche en una columna entera (que es Postgres no MySQL pero no obstante). Tal vez ese enfoque puede funcionar para usted también?

+2

ah sí, no necesito almacenar en el db de esa manera, pero podría ser una manera fácil de compararlos. ActiveSupport incluye un método time.seconds_since_midnight. – loosecannon

+0

¡Esta es una gran idea! –

+1

exactamente lo que necesitaba. Este tipo es un genio maldito. – mraaroncruz

Cuestiones relacionadas