oddities in the datetime module

Max M maxm at mxm.dk
Fri Jan 14 23:03:16 CET 2005


Serge Orlov wrote:
> Max M wrote:

> Yes, you did. datetime.timetuple is those who want *time module* format, you should use datetime.data, datetime.time, datetime.year 
> and so on...
> 
> As they say, if the only tool you have is timetuple, everything looks like tuple <wink>
> Try this:
> 
>>>>dt = datetime(2005, 1, 1, 12, 0, 0)
>>>>dt.date()
> 
> datetime.date(2005, 1, 1)

This doesn't solve it. I don't think you understand my issue.

First of, it should be possible to easily convert between the datetime 
objects.

And eg. the date object doesn't have a datetime() method. Which it could 
easily have. Neither does time. They could have. But I don't think that 
is the way to solve it.



It is a problem if you make a subclass of datetime. Often you will ned 
to make datetime arithmetics with the new class.

Like: datetime_subclass_1 + datetime_subclass_2

The result of that is a plain datetime

In that case you will rather want your own subclass returned. But 
subclasses of datetime returns datetime objects. Not the subclass.

So to do an add of your own objects you must convert the output to your 
own class "manually"

class my_datetime(datetime):

     def __add__(self, other):
         result = datetime.__add__(self, other)
         return my_datetime(result.timetuple()[:6])

datetime(), time() etc. methods will not help with this.

-- 

hilsen/regards Max M, Denmark

http://www.mxm.dk/
IT's Mad Science



More information about the Python-list mailing list