Skip to content

Instantly share code, notes, and snippets.

@PlanNoa
Last active October 28, 2022 08:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save PlanNoa/7b2c5588e1010b753cae94005a9ebb40 to your computer and use it in GitHub Desktop.
Save PlanNoa/7b2c5588e1010b753cae94005a9ebb40 to your computer and use it in GitHub Desktop.
python range for datetime
import datetime
class datetimerange:
def __init__(self, startdate, enddate, delta=None):
self.startdate = startdate
self.enddate = enddate
self._current_date = self.startdate
self._is_side_positive = self.startdate <= self.enddate
if delta is None:
if self.side:
delta = datetime.timedelta(minutes=1)
else:
delta = datetime.timedelta(minutes=-1)
self.delta = delta
def _check_delta(self):
is_delta_positive = self.delta > datetime.timedelta(minutes=0)
return self._is_side_positive == is_delta_positive
def __iter__(self):
return self
def __next__(self):
if self._check_delta():
if self._is_side_positive and self._current_date < self.enddate:
current_date = self._current_date
self._current_date += self.delta
return current_date
elif not self._is_side_positive and self._current_date > self.enddate:
current_date = self._current_date
self._current_date += self.delta
return current_date
raise StopIteration
if __name__=="__main__"
startdatetime = datetime.datetime.now()
enddatetime = startdatetime + datetime.timedelta(hours=6)
for dt in datetimerange(startdatetime, enddatetime, datetime.timedelta(minutes=10)):
print(dt)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment