with strf rails month ruby-on-rails datetime ruby-on-rails-3

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"