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.