Estoy creando una nueva aplicación Rails 3, y en el uso que tengo DateTime para un par de campos de cultivo, sin embargo, cada campo de fecha y hora estándar UTC detrás de él (en una visión), como:

2010-10-10 16:19:00 UTC

¿Cómo deshacerse de la UTC parte?

ACTUALIZACIÓN: aquí está lo que tengo hasta ahora:

<%= trip.truckleft.strftime("%Y-%m-%d %H:%M") %>

Así que todo lo que tengo que hacer ahora es poner eso en un ayudante, pero no hay una mejor forma más universal?

Miré en algunos otros posts, que sugirió la creación de un time_formats.rb en inicializadores, sin embargo, yo no tenía ningún éxito haciendo eso.

Gracias por tu ayuda, muy apreciada!

InformationsquelleAutor Paintrick | 2010-09-12

6 Comentarios

  1. 65

    Otro-tal vez ahora se prefiere — es la utilización de Rails’ internacionalización y localización. Hay mucho que aprender en esta guía, por lo que el tl;dr versión es esta:

    <%= l trip.truckleft, :format => :long %>

    Hay algunos predefinidos, formatos de fecha y hora como :long disponibles ya para el inglés, y usted puede añadir su propio en config/locales/en.yml siguiendo el YAML estructura en los ejemplos. Si usted no está consiguiendo fuertemente en el conjunto de la i18n/l10n cosa todavía, y mirando al l método todo el tiempo es confuso, también se puede utilizar:

    <%= trip.truckleft.to_formatted_s(:long) %>
    • Argh, aquí es la guía que yo estaba tratando de enlace. Desbordamiento de pila no me deja publicar más de un vínculo, porque mi cuenta es nueva. Sheesh.
    • gracias! voy a mantener esto en mente para el futuro
    • +1 y upvoted para obtener su representante más alto-un Desbordamiento de Pila necesita más gente como tú
  2. 42

    Aquí es lo que finalmente se trabajó para mí:

    He creado un nuevo archivo en:

    config/initializers/

    nombre: time_formats.rb

    y agregó a ese archivo:

    Time::DATE_FORMATS[:default] = "%Y-%m-%d %H:%M"

    Entonces me salvó, reinicie el servidor y se comenzó a trabajar.

    • No funciona para mí.
    • No funciona para mí también!
    • Funcionó para mí. Rieles 3.2.11
    • votar por la mejor, la más corta, más fácil solución
    • Esto me funciona en 4.1. La ventaja de este método es que, a menudo, no es necesario añadir el to_s, la mayoría de los contextos se convierten el tiempo en una cadena de forma automática. También puede agregar otros formatos tales como el Tiempo::DATE_FORMATS[:date_only] = «%Y-%m-%d» y, a continuación, utilizarlos como hasta la fecha.to_s(:date_only) – menos código que el proceso de internacionalización de la versión, por lo tanto mejor si no tienen planes para internacionalizarse.
    • Sólo tienes que añadir Fecha::DATE_FORMATS[:default] = «%Y-%m-%d %H:%M» así, no sólo el formato de la hora 😉 a mi me Funciona en rails > 4.1
    • gracias por esto….muy bonito solución…genio

  3. 26

    Estoy usando i18n para dar formato a mi las 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/inicializadores/time_formats.rb contiene esto:

    Date::DATE_FORMATS[:default] = lambda { |date| I18n.l(date) }
  4. 14

    Para ser exactos, usted debe poner en su inicializadores:

    Date::DATE_FORMATS[:default] = "%m-%d-%Y"
    Time::DATE_FORMATS[:default] = "%m-%d-%Y %H:%M"

    Al tener datetime, el segundo trabajo (por ejemplo: created_at en los modelos).

    • Pero no funciona para .to_json utilizado en respond_to.
  5. 1

    Usted puede poner la siguiente línea al final de su config/environment.rb de archivo:

    Date::DATE_FORMATS[:default] = "%Y-%m-%d %H:%M"
    • por desgracia, eso no funciona
    • para mí ni trabajan
  6. 1

    para rails 3

    añadir 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 de las otras respuestas es merge! método)

Dejar respuesta

Please enter your comment!
Please enter your name here