[Python-Dev] datetime +/- scalars (int, long, float)?

Neal Norwitz neal@metaslash.com
2002年3月03日 09:29:01 -0500


Would it be good to allow adding/subtracting scalars (int, long, float) 
to/from date/times? The scalar value would be # of seconds.
So:
	dt = datetime() # some date/time
	dt + 5 # would add 5 seconds
	dt + 5.3 # would add 5 seconds 300000 usecs
If so, attached is a patch.
Neal
--
Index: sandbox/datetime/datetime.py
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/datetime/datetime.py,v
retrieving revision 1.22
diff -w -u -r1.22 datetime.py
--- sandbox/datetime/datetime.py 3 Mar 2002 06:11:54 -0000 1.22
+++ sandbox/datetime/datetime.py 3 Mar 2002 14:26:19 -0000
@@ -590,6 +590,13 @@
 result.__microsecond = us
 result.__tzoffset = self.__tzoffset
 return result
+ elif isinstance(other, (int, long)):
+ return self + timedelta(0, other)
+ elif isinstance(other, float):
+ # XXX not sure if float needs it's own condition or
+ # XXX should work the same as int/long
+ ss, us = divmod(other, 1000000)
+ return self + timedelta(0, ss, int(us))
 return NotImplemented
 
 __radd__ = __add__
@@ -598,6 +605,13 @@
 "Subtract two datetimes, or a datetime and a timedelta."
 if isinstance(other, timedelta):
 return self + -other
+ elif isinstance(other, (int, long)):
+ return self + -timedelta(0, other)
+ elif isinstance(other, float):
+ # XXX not sure if float needs it's own condition or
+ # XXX should work the same as int/long
+ ss, us = divmod(other, 1000000)
+ return self + -timedelta(0, ss, int(us))
 if isinstance(other, datetime):
 days1 = self.toordinal()
 days2 = other.toordinal()

AltStyle によって変換されたページ (->オリジナル) /