[Python-Dev] dateutil

Brett C. bac at OCF.Berkeley.EDU
Fri Mar 12 03:29:12 EST 2004


Responding to both Tim's and Gustavo's follow-ups to my email here.


Tim Peters wrote:

> [Brett C.]
> 
>>Before I give my vote on DateUtil I know I would love to hear Gustavo
>>give a quick comparison to datetime in terms of what DateUtil provides
>>over datetime.
<SNIP>
> 
> WRT time deltas, datetime stuck to things people can't reasonably argue
> about, while DateUtil (like mxDateTime before it) is in the business of
> guessing what people really want.  That's why, e.g., datetime.timedelta has
> no months= argument.  People can (and do) argue about what "a month" means
> (what's one month after January 31?  A few days into March?  The last day of
> February?  4 weeks later?  30.436875 days later (that's 365.2425/12 == the
> average length of a year in days divided by 12)?).  They can't argue about
> what "a week" means -- it's 7 days.  And a day is 24 hours, and an hour is
> 60 minutes, and a minute is 60 seconds, and a second is 10000000
> microseconds, and "leap seconds" don't exist.
> 
> Ya, that was a gutless decision, but it also means datetime isn't about to
> change the rules on you because some other notion of "month" becomes
> fashionable.  datetime is about naive time, an idealized calendar and an
> idealized clock that won't change even if social or legislative or physical
> reality does.  It's a safe fantasy land where you can block out the world's
> noise.  That's also why it ignores timezones <wink>.
> 

This all makes sense to me.  No need to try to pigeonhole others into 
our own definitions of date/time "stuff".

> 
>>The rrule idea does sound cool and could be neat to add to datetime.
>>I can see having an iterator for these things being useful to someone
>>(unless I am making myself partially look like a fool again by having
>>this be in datetime already without me realizing it).
> 
> 
> Nope, they're not, and things like "the second Tuesday of the month" aren't
> supported natively by datetime at all.  They're easy enough to compute using
> datetime as a basis, but the datetime Wiki was full of incompatible
> suggestions about what people really wanted there.  We didn't have time (or
> interest) in settling those arguments, so we covered our asses by leaving it
> out.  Gustavo is covering his by appealing to an external standard, which is
> an admirable strategy.
> 

OK, so this does sound cool.  I wouldn't mind seeing this added to the 
language for those values that are not questionable as with the 
timedeltas (if there even are any).



Gustavo Niemeyer wrote:
 > Here is a quick list of features, from the website:
 >
 > * Computing of relative deltas (next month, next year,
 >   next monday, last week of month, and a lot more);
 >

As Tim pointed out, this is a little sticky.  I personally appreciate 
datetime's choice of not trying to force me into a specific 
interpretation of what a "month" is.  I say stay naive.

 > * Computing of relative deltas between two given
 >   date and/or datetime objects;
 >

Without the relative delta values based on the "questionable" date/time 
"stuff" this seems to boil down to datetime.timedelta .

 > * Computing of dates based on very flexible recurrence rules
 >   (every month, every week on Thursday and Friday, every
 >   Friday 13th, and a *LOT* more), using a superset of the
 >   iCalendar RFC specification. Parsing of RFC strings is
 >   supported as well.
 >

This is very cool.  It's based on an accepted API which is a big plus 
and the functionality could be very useful.

 > * Generic parsing of dates in almost any string format;
 >

Seems like a convenience wrapper around strptime .  Personally I would 
love for datetime objects to have a class method to be able to take in 
the appropriate ISO-formatted date/time string and return the 
appropriate datetime object.  Otherwise I would rather keep the 
interface clean of string parsing short of using strptime .

But then again maybe I just don't want strptime to become obsolete.  =)

 > * Timezone (tzinfo) implementations for tzfile(5) format
 >   files (/etc/localtime, /usr/share/zoneinfo, etc), TZ
 >   environment string (in all known formats), iCalendar
 >   format files, given ranges (with help from relative deltas),
 >   local machine timezone, fixed offset timezone, and UTC
 >   timezone.
 >

This could be good.  Beyond knowing that timezones are a pain in the 
rear to deal with in terms of DST I don't know *how* good it would be. 
I know datetime stays away from timezones, but if it can be gleaned from 
the system cleanly it might be nice to have that option.  Breaks with 
the naive view that I am supporting here, but this stuff can be hard to 
deal with so I think it wouldn't hurt to have.

 > * Computing of Easter Sunday dates for any given year,
 >   using Western, Orthodox or Julian algorithms;
 >

Don't really see the use in this other than the rule figuring this out 
is odd enough that I never remember.  Who really cares when Easter is 
beyond certain religious groups?



OK, so with the rrule stuff, I am +1 on adding those if we can come up 
with a clean way to add them to datetime (I don't think we need a 
separate module as Jim Jewett pointed out; we already have enough 
date-related modules).  -1 for the timedelta stuff since I am fine with 
not handling timedeltas for "a month from now", etc. unless we can get 
that kind of definition from the iCalender API and thus have a 
consistent basis on an accepted API.  And then -0 on the rest since I 
fall in the "minimize stdlib bloat" camp.

-Brett



More information about the Python-Dev mailing list