Boost logo

Boost :

From: Jeff Garland (jeff_at_[hidden])
Date: 2004-04-17 12:53:10


On Thu, 15 Apr 2004 09:56:55 -0400 (EDT), Rob Stewart wrote
> Curiously, though, no one has mentioned "next month" as in the
> same day of the same week of next month, or the same ordinal day
> of the week of next month. You could say that these are much
> more specialized, and don't need to be handled by the library,
> but think about regular first Monday of the month meetings or
> other similar scheduling needs. Don't those deserve some
> attention? Isn't what you've been asking of add_month() really
> just a case of this broader functionality? That is,
> you want next_month(d, n, same_day_of_month_or_fall_back), but
> others may want next_month(d, n, same_ordinal_day_of_week), etc.

Yes, I think this deserves attention and it is already supported in the
library. There are a set of 'date generator' classes in the library that
support the generation of a date from logical information like: last Monday in
January:

last_kday_of_month lkm(Monday, Jan);
//supply the missing data to generate a concreate date -- year in this case
date last_mon_jan_2004 = lkm.getDate(2004); //26th
date last_mon_jan_2003 = lkm.getDate(2003); //27th

I'm starting to think this is where the next_month functionality should
belong. Because it allows for the library to easily support a variety of
different algorithms. And user extensions can follow the same model so as to
make custom behaviors integrate seemlessly.

So, I'm thinking something like:
  increment_month_with_end_of_month_rollback add_quarter_year(3);
  date d(...); //whatever
  d = add_quarter_year(d);

BTW, I'm still not opposed to other syntaxes and first class representations
of months to allow simplified syntax. However, I think that this would need
to build on top of a pure functional foundation.

Jeff


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk