spanish rails now change ruby datetime iso8601

rails - strftime spanish ruby



¿Existe una implementación completa para el análisis de fecha ISO-8601 para Ruby? (2)

Para convertir una fecha ISO8601 en la zona horaria local, haga lo siguiente:

dt1 = Time.parse("2010-09-06T12:27:00.10-05:00")

Para convertir una fecha ISO8601 en UTC, haga esto:

dt2 = Time.iso8601("2010-09-06T12:27:00.10-05:00")

Si compara las fechas devueltas por las consultas anteriores, serán idénticas (es decir, dt1 === dt2). Sin embargo, el acceso a los componentes de fecha (como año, mes, día, hora, etc.) devolverá los valores apropiados para la zona horaria (ya sea UTC o local). Lo mismo se aplica a strftime.

El método Time.iso8601 es un subconjunto restringido de ISO-8601.

  • ¿Cuáles son sus limitaciones?
  • ¿Alguien sabe de una implementación completa para Ruby? Estoy usando MRI 1.8.7.

Actualizar

Parece que no hay una sola clase que maneje todas las diferentes combinaciones de fecha y hora de 8601. Sin embargo, he logrado solucionar los problemas utilizando los métodos Date.parse y Time.iso8601 . La desventaja es que debe decidir en el código si la entrada parece una fecha o una fecha / hora.

Advertencia: las diferencias de zona horaria

Time.iso8601 y Time.parse comportan de manera diferente.

>> Time.parse("2010-09-06T12:27:00.10-05:00") => Mon Sep 06 18:27:00 +0100 2010 >> Time.iso8601("2010-09-06T12:27:00.10-05:00") => Mon Sep 06 17:27:00 UTC 2010

Diferencias entre Time.iso8601 e ISO-8601

Este documento toca las diferencias entre lo que está en ISO-8601 y lo que es compatible con Ruby. La respuesta corta es que el número de formatos posibles está restringido.


Sí, pero desafortunadamente está en Ruby 1.9.

require "date" Date.iso8601("2010-W32-5").strftime #=> "2010-08-13"

No creo que haya implementaciones para Ruby 1.8.7 (o al menos no pude encontrar ninguna). Puedes intentar actualizar a Ruby 1.9, que es bastante estable a partir de 1.9.2. Alternativamente, podrías intentar analizar las fechas tú mismo.