[phobos] datetime review
Andrei Alexandrescu
andrei at erdani.com
Thu Oct 14 16:06:28 PDT 2010
On 10/14/10 17:01 CDT, Jonathan M Davis wrote:
> What's really annoying is when you want to create a range which iterates over
> time points which are apart by some combination of years, months, and smaller
> units.
The more I think of it the more I want this feature out. It would be
borderline nice if it were a natural consequence of the design, but
sweating over it doesn't sit well at all.
> Before, you could just give the function something like Dur.years(5) +
> Dur.months(1) + Dur.days(2) and it would produce a function which gave you a
> time point 5 years, 1 month, and 2 days after the previous one. But without
> MonthDuration or JointDuration, that becomes much more awkward. I'm still
> ironing out the best way to deal with the function signature for that.
I could say
d.addYear(5);
d.addMonths(1);
d.addDays(2);
This is acceptable considering that it's not that often you really need
to be 5 years, 1 month, and 2 days from now. Besides it's weird. What if
I take 27 January 2010 and then skip that duration? Will I be on Feb 28
2015 or Mar 1 2015? I don't know, and the simple fact that I need to ask
myself (and that the library needs to respond) such an awkard question
is embarrassing.
If it were me I'd even postulate that addMonths takes you to the 1st of
the landing month. Or eliminate addMonths and addYears altogether,
because adding 1 year to 29 February 2008 does not land on a good date.
Allow the user to construct a new Date from the current year, month, and
day.
Andrei
More information about the phobos
mailing list