2015-05-17 6 views
6

jestem coraz datę jako ciąg jak poniżej:jak przekonwertować ciąg do obiektu Date w Ruby

"September 1998" 

Próbowałem jak Date.parse("September 1998"), ale to nie działa.

Jak przekonwertować go na obiekt daty ruby, który zwraca ciąg w powyższym formacie?

+2

Ale «wrzesień 1998» nie jest data, to brakuje dzień. –

+0

tak. Ale robię się tak tylko. Czy mogę go przekonwertować na 09-1998 – rubyist

+0

Zawsze określa format podczas analizowania dat, szczególnie jeśli używasz formatów, które mogą zawierać dzień i miesiąc. Wymuszaj formatowanie na podstawie ustawień narodowych użytkownika i upewnij się, że daty są rozróżniane na wszelki wypadek. – aceofspades

Odpowiedz

9

Date.strptime('September 1998', '%B %Y'). Jednak będzie to reprezentować wrzesień 1st 1998, ponieważ obiekty daty reprezentują, no, daty.

4

można użyć chronic gem:

require 'chronic' 

t = Chronic.parse('September 1998', :guess => true) #returns a Time object 
=> 1998-09-01 00:00:00 -0700 

t.to_date #convert to Date object 
=> <Date: 1998-09-16 ((2451073j,0s,0n),+0s,2299161j)> 

Przewlekłe został stworzony przez Tom Preston-Werner, który także współtworzył GitHub.

2

Wystarczy poprzedzić brakuje „1”:

str ="September 1998" 
p Date.parse("1 " + str) # => #<Date: 1998-09-01 ((2451058j,0s,0n),+0s,2299161j)> 
Powiązane problemy