2010-09-21 7 views
19

Avec 1.9.2p0, l'analyse de date # suppose un format UE. Vérifiez format.rb, ligne: 1042 si vous ne me croyez pas.L'option Make # # prend un format US au lieu d'un format EU.

Quoi qu'il en soit, comment puis-je faire assumer un format américain, de sorte que:

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

au lieu du 10 Avril.

J'ai essayé ceci:

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

mais pas de chance. D'autres idées?

+0

Je viens de comparais format.rb Ruby 1.8.7 à 1.9.2 et ils ont tous deux de test pour _parse_eu() avant _parse_us(). –

+0

Oui, plus de creusement et ce n'est pas une de ces méthodes qui attrapent un format comme "10/2/2010" - Quelque chose a changé dans _parse_ddd ainsi que quelque chose d'autre que je n'ai pas encore compris. – jsharpe

+0

semble ne pas être pris en charge: – jsharpe

Répondre

27

Date.strptime est ce que vous voulez, mais malheureusement, il ne semble pas que la documentation a les chaînes de mise en forme de la date. Je suis arrivé ce qui suit au travail basé sur googler pour les chaînes de format:

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

Les directives de formatage de date sont celles utilisées par 'strftime', qui peut être trouvé ici: http: // www .ruby-doc.org/stdlib-2.1.2/libdoc/date/rdoc/Date.html # method-i-strftime – Aupajo

+0

On dirait que le lien que vous avez fourni dans votre réponse n'est plus valide, en voici un autre: http: // ruby-doc.org/stdlib-1.8.7/libdoc/date/rdoc/Date.html#method-c-strptime – Tass

+0

Lien mis à jour vers la dernière documentation. – Jason

2

Vous souhaiterez peut-être vérifier strptime à la place.