ruby-on-rails - strf - rails datetime with timezone
Rails 3 formato de fecha y hora predeterminado sin UTC (6)
para carriles 3
agregar a config/environment.rb
my_datetime_formats = { :default => ''%F %T'' } #or any other you like
my_date_formats = { :default => ''%F'' } #or any other you like
Time::DATE_FORMATS.merge!(my_datetime_formats)
Date::DATE_FORMATS.merge!(my_date_formats)
(la diferencia con otras respuestas - ¡es el método de merge!
)
Estoy creando una nueva aplicación Rails 3, y en ella utilizo DateTime
para un par de campos, sin embargo, cada estándar de campo datetime tiene UTC detrás (en una vista), como:
2010-10-10 16:19:00 UTC
¿Cómo me deshago de la parte UTC?
ACTUALIZACIÓN: esto es lo que tengo hasta ahora:
<%= trip.truckleft.strftime("%Y-%m-%d %H:%M") %>
Entonces, todo lo que tengo que hacer ahora es ponerlo en una ayuda, pero ¿no hay una forma mejor y más universal?
Miré algunas otras publicaciones, que sugerían crear time_formats.rb
en inicializadores, sin embargo, no tuve ningún éxito al hacerlo.
¡Gracias por tu ayuda, lo aprecio mucho!
Esto es lo que finalmente funcionó para mí:
Creé un nuevo archivo en:
config/initializers/
named: time_formats.rb
y agregué esto a ese archivo:
Time::DATE_FORMATS[:default] = "%Y-%m-%d %H:%M"
Luego guardé, reinicié el servidor y comenzó a funcionar.
Estoy usando i18n para formatear mis fechas y tener esto en en.yml:
date:
formats:
default: "%m/%d/%Y"
Quería reutilizar el formato de cómo los modelos muestran sus fechas, así que mi config / initializers / time_formats.rb contiene esto:
Date::DATE_FORMATS[:default] = lambda { |date| I18n.l(date) }
Otra forma, quizás ahora preferida, es utilizar el soporte de internacionalización y localización de Rails . Hay mucho que aprender en esa guía, por lo que la versión de tl; dr es esta:
<%= l trip.truckleft, :format => :long %>
Hay algunos formatos predefinidos de fecha y hora como :long
disponible para usted ya para inglés, y puede agregar el suyo en config/locales/en.yml
siguiendo la estructura YAML en esos ejemplos. Si todavía no te estás metiendo de lleno en todo el asunto de i18n / l10n y estás mirando el método l
todo el tiempo es confuso, también puedes usar:
<%= trip.truckleft.to_formatted_s(:long) %>
Para ser exactos, debes poner estos en tus inicializadores:
Date::DATE_FORMATS[:default] = "%m-%d-%Y"
Time::DATE_FORMATS[:default] = "%m-%d-%Y %H:%M"
Al tener fecha y hora, el segundo funcionará (por ejemplo: created_at for en modelos).
Puede poner la siguiente línea al final de su archivo config/environment.rb
:
Date::DATE_FORMATS[:default] = "%Y-%m-%d %H:%M"