Klasa Time i nastepny miesiac

Heja

Jak majac obiekt klasy Time otrzymac nastepny miesiac ? Nie wiem czy to bug ale jak po prostu dodalem “1.month” to ruby dodal po prostu 30 dni i gdy mam miesiac z 31 dniami ten sposob sie nie sprawdza…

np:

time = Time.parse(“2007-07-01”)
=> Sun Jul 01 00:00:00 CEST 2007

time = time + 1.month
=> Tue Jul 31 00:00:00 CEST 2007

Z gory dzieki za pomoc

[quote=sadu]Heja

Jak majac obiekt klasy Time otrzymac nastepny miesiac ? Nie wiem czy to bug ale jak po prostu dodalem “1.month” to ruby dodal po prostu 30 dni i gdy mam miesiac z 31 dniami ten sposob sie nie sprawdza…

np:

time = Time.parse(“2007-07-01”)
=> Sun Jul 01 00:00:00 CEST 2007

time = time + 1.month
=> Tue Jul 31 00:00:00 CEST 2007[/quote]
No jasne, że liczba 1 nie ma pojęcia w jakim kontekście jest użyta. 1.month nie jest w stanie rozpoznać czy chodzi o miesiąc 29, 29, 30 czy 31 dniowy. A tak w sumie, to nie bardzo rozumiem co chcesz uzyskać. Załóżmy że masz 30 stycznia. Co ma być następnym miesiącem?

Jak mam styczen chce otrzymac luty, po lutym marzec itd… Ogolnie chodzi o zrobienie iteratora po dniach i miesiącach. Używalem do tego rowniez klasy range ale nie wiem dlaczego skrypt sie strasze mulil i musialem z tego zrezygnowac…

Chodzi o sam miesiąc, czy o konkretny dzień “miesiąc później”? Np. 20 stycznia + 1 miesiąc co ma dawać? 1 luty? 28 lub 29 luty? I co z przełomem roku? Co ma być “miesiąc później” licząc od 31 grudnia?

wystarczy mi byle jaki dzien z nastepnego miesiaca a jak jest grudzien to zwraca nastepny rok i styczen

Proponuje tak:

[code]>> t1 = Time.now
=> Wed Aug 08 18:36:20 CEST 2007

t2=t1.advance(:months=>1)
=> Sat Sep 08 18:36:20 CEST 2007[/code]
Więcej tu: http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/Time/Calculations.html#M000326

Chyba najprościej użyć next_month() .

wielkie dzieki… teraz mi glupio bo patrzylem tylko na doca klasy time w ruby a tu taka milo niespodzianka. Swoja droga dziwne ze sam ruby nie wspiera takich rzeczy…