Pregunta

Me he encontrado un lugar de molestarse con los formatos de fecha en nuestra aplicación Rails.

Tengo un campo de fecha en nuestra opinión, que yo quiero tener formato de dd / mm / aa . Esta es la forma en que el usuario va a esperar para entrar en sus fechas, y el control selector de fecha utiliza este formato.

Sin embargo, Active Record parece estar esperando dd / mm / aa .

Si entro 01/03/2010 , esto se puso como 03 de enero de de 2010 .

Si entro 25/03/2010 , esto se puso en un nula .

¿Cómo llego a esperar ActiveRecord Su formato de fecha Majestades?

¿Fue útil?

Solución

Fecha y hora de Rails intenta detectar automáticamente el formato. Se detectará los siguientes formatos: mm/dd/yy o dd-mm-yy o yyyy-mm-dd o yyyy/mm/dd. Usted podría DateTime.parse mono-parche, pero preferiría mover este tema a la Ver de su aplicación.

Siempre recomiendo usar yyyy-mm-dd [hh:mm:ss] como una representación de cadena de una fecha. Consulte la documentación de su DatePicker si es compatible con múltiples formatos de fecha-.

El selector de fecha jQuery por ejemplo, ha esta cubierta con dateFormat (para los datos que se envían al servidor, active esta yyyy-mm-dd), así como altFormat (para la entrada que ve el usuario, establecer este a dd/mm/yyyy).

Otros consejos

Añadir un archivo llamado rails_defaults.rb al directorio config\initializers; con las siguientes líneas:

Date::DATE_FORMATS[:default] = '%d/%m/%Y'
Time::DATE_FORMATS[:default]= '%d/%m/%Y %H:%M:%S'

Reiniciar el servidor y que son buenos para ir.

class Date
  class << self
    def _parse_with_us_format(date, *args)
      if date =~ %r{^(\d+)/(\d+)/(\d+)$}
        _parse_without_us_format("#{$3.length == 2 ? "20#{$3}" : $3}-#{$1}-#{$2}", *args)
      else
        _parse_without_us_format(date, *args)
      end
    end
    alias_method_chain :_parse, :us_format
  end
end
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top