Formateo de fechas en Ruby on Rails
18-3-2008: Actualizado para Rails 2
Una manera fácil de dar el formato que más nos guste a las fechas es hacerlo una a una utilizando strftime:
<%= post.created_at.strftime("%d-%m-%Y") %>
Eso esta muy bien para formatear un par de fechas, pero para toda una aplicación hay que encontrar un método de hacerlo automáticamente. Para eso creamos un archivo en el directorio config/initializers/ que formaterá las fechas de nuestra aplicación, le podemos poner el nombre que más nos guste, yo siempre utilizo date_format.rb y añadimos:
ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS[:default]='%d-%m-%Y %H:%m'
Con esto convertiremos todas las fechas que aparezcan en las vistas al formato “03-11-2008 22:34″
Si necesitamos varios formatos de fecha podemos hacerlo de la siguiente manera:
ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.merge!(
:default => >%d.%m.%Y',
:my_format_1 => '%d/%m/%Y - %H:%M',
:my_format_2 => '%l:%M %p, %B %d, %Y',
:my_format_3 => '%d/%m/%Y')
:default es la manera por defecto como se mostrarán las fechas. Las variables my_format_x indican diferentes maneras que utilizaremos para formatear las fechas. Una vez hecho esto, cuando queramos escribir una fecha, lo haremos de la siguiente manera: supongamos un modelo u objeto llamado “Evento”, que en la tabla tiene un campo que se llama “fecha” de tipo DATE, para ver la fecha correctamente escribiremos:
<%=h Evento.fecha.to_s(:my_format_3) %>
Si el campo es DATETIME podemos utilizar el formato 1
<%=h Evento.fecha.to_s(:my_format_1) %>
Si no especificamos nada, utilizará el formato definido en :default
Así de fácil!
