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


Reply via email to