You could use 

Month class>>#daysInMonth:forYear:


Which I think does what you want already.



stepharo wrote
> Hi
> 
> I started to write a little utility to generate bills.
> 
> And I need to know the number of days in a month and I was surprised that
> 
> (Month month: 2) daysInMonth returns 28 because we do not know :)
> 
> So I thought that I was obviously wrong and I should use
> 
> (Year year: 2016) daysInMonth
> 
>      > "#(31 28 31 30 31 30 31 31 30 31 30 31)"
> 
> :(
> 
> When I look at the implementation this is clear that it is wrong
> 
> daysInMonths
>      ^ Date daysInMonth
> 
> totally not aware of the year.
> 
> 
> I think that daysInMonths should use DateAndTime creating a dummy date 
> for each month and using asMonth daysInMonth
> 
> (DateAndTime
>      year: 2016 month: 2 day: 3)
>      asMonth
>      daysInMonth
> 
>      > 29
> 
> 
> 
> Year >> daysInMonth: aMonthNumber
>      "Returns the days in month for a given month"
> 
>      
> <expr: #(#(#Year #year: 2016) #daysInMonth: 2) result: 29>
>      ^ (DateAndTime year: self year month: aMonthNumber) asMonth
> daysInMonth
> 
> 
> I extended the class with some more practical methods. What do you 
> think? I should push them to pharo?
> 
> I was surprised that the library was not that good.
> 
> Stef





--
View this message in context: 
http://forum.world.st/About-Year-not-knowing-exact-daysInMonth-tp4915092p4915100.html
Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.

Reply via email to