date and time range checking

Andrew Dalke dalke at dalkescientific.com
Thu Jun 2 15:38:57 EDT 2005


Maksim Kasimov wrote:
> there are few of a time periods, for example:
> 	2005-06-08 12:30 -> 2005-06-10 15:30,
> 	2005-06-12 12:30 -> 2005-06-14 15:30
> 
> and there is some date and time value:
> 	2005-06-11 12:30



> what is the "pythonic" way to check is the date/time value in the given periods range?


>>> import datetime
>>> t1 = datetime.datetime(2005, 6, 8, 12, 30)
>>> t2 = datetime.datetime(2005, 6, 10, 15, 30)
>>> t = datetime.datetime(2005, 6, 9, 14, 00)
>>> if t1 < t < t2:
...   print "In range"
... 
In range
>>> t = datetime.datetime(2005, 6, 8, 14, 00)
>>> if t1 < t < t2:
...   print "In range"
... 
In range
>>> t = datetime.datetime(2005, 6, 7, 14, 00)
>>> 
>>> if t1 < t < t2:
...   print "In range"
... 
>>>

If you want to use the "in" syntax

>>> class InRange:
...   def __init__(self, low, high):
...     self.low = low
...     self.high = high
...   def __contains__(self, obj):
...     return self.low < obj < self.high
... 
>>> r = InRange(t1, t2)
>>> datetime.datetime(2005, 6, 7, 14, 00) in r
False
>>> datetime.datetime(2005, 6, 8, 14, 00) in r
True
>>> datetime.datetime(2005, 6, 9, 14, 00) in r
True
>>> datetime.datetime(2005, 6, 9, 18, 00) in r
True
>>> datetime.datetime(2005, 6, 10, 18, 00) in r
False
>>> 

				Andrew
				dalke at dalkescientific.com




More information about the Python-list mailing list