2010-09-21 12 views
19

Z 1.9.2p0, Data # analizuje format UE. Sprawdź format.rb, wiersz: 1042, jeśli mi nie wierzysz.Wykonaj Data # parsuje format US zamiast formatu UE

W każdym razie, w jaki sposób mogę to zrobić zakładamy format nami, tak że:

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

Zamiast 10 kwietnia.

Próbowałem to:

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

ale bez powodzenia. Jakieś inne pomysły?

+0

Właśnie porównaniu format.rb Ruby 1.8.7 do 1.9.2 jest i oboje test _parse_eu() przed _parse_us(). –

+0

Tak, więcej kopania i to nie jest żadna z tych metod, które wychwytują format "10/2/2010" - Coś zmieniło się w _parse_ddd, a także coś innego, czego nie do końca zrozumiałem. – jsharpe

+0

Wygląda na to, że nie jest obsługiwane: – jsharpe

Odpowiedz

27

Date.strptime to, czego chcesz, ale niestety nie wygląda na to, że dokumentacja ma ciągi formatowania daty. Mam następujące do pracy na podstawie Googling dla strun 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

Dyrektywy dotyczące formatowania daty używane są przez 'strftime', które można znaleźć tutaj: http: // www .ruby-doc.org/stdlib-2.1.2/libdoc/date/rdoc/Date.html # method-i-strftime – Aupajo

+0

Wygląda na to, że link podany w odpowiedzi jest już nieaktualny, oto kolejna: http: // ruby-doc.org/stdlib-1.8.7/libdoc/date/rdoc/Date.html#method-c-strptime – Tass

+0

Zaktualizowany link do najnowszej dokumentacji. – Jason