2010-09-21 10 views
19

Con 1.9.2p0, Date # parse supone un formato de UE. Mira format.rb, línea: 1042 si no me crees.Hacer que Date # Parse asuma un formato de EE. UU. En lugar de un formato de EU

De todas formas, ¿cómo puedo hacer que asuma un formato de Estados Unidos, de modo que:

> Date.parse("10/4/2010") 
=> Mon, 04 Oct 2010 

En lugar del 10 de abril.

He intentado esto:

class Date 
    def _parse_eu(str,e) 
    _parse_us(str,e) 
    end 
end 

pero no hubo suerte. ¿Alguna otra idea?

+0

simplemente he comparado format.rb de Ruby 1.8.7 a 1.9.2 y ambos de prueba para _parse_eu() antes de _parse_us(). –

+0

Sí, más investigación y ninguno de esos métodos captura un formato como "10/2/2010" - Algo ha cambiado en _parse_ddd, así como algo más que no he descifrado. – jsharpe

+0

parece que no tiene soporte: – jsharpe

Respuesta

27

Date.strptime es lo que quiere, pero desafortunadamente no parece que la documentación tenga las cadenas de formato de fecha. Tengo el siguiente a trabajo basado en Google para las cadenas de formato:

1.9.2 > d = Date.strptime("10/4/2010", "%m/%d/%Y") 
=> #<Date: 2010-10-04 (4910947/2,0,2299161)> 
1.9.2 > d.day 
=> 4 
1.9.2 > d = Date.strptime("10/4/2010", "%d/%m/%Y") 
=> #<Date: 2010-04-10 (4910593/2,0,2299161)> 
1.9.2 > d.day 
=> 10 
+0

Las directivas de formato de fecha son las utilizadas por 'strftime', que se pueden encontrar aquí: http: // www .ruby-doc.org/stdlib-2.1.2/libdoc/date/rdoc/Date.html # method-i-strftime – Aupajo

+0

Parece que el enlace que proporcionó en su respuesta ya no es válido, aquí hay otro: http: // ruby-doc.org/stdlib-1.8.7/libdoc/date/rdoc/Date.html#method-c-strptime – Tass

+0

Enlace actualizado a la documentación más reciente. – Jason

2

Es posible que desee comprobar strptime en su lugar.

Cuestiones relacionadas