11👍
Your answer is the way to go as long as start_time and end_time don’t have an associated tzinfo class. You can’t directly compare a naive datetime with a timezoned-datetime.
11👍
you can use a simple if comparing three dates, like this
if date1 < yourdate < date2:
...do something...
else:
...do ...
- Django finds tests but fail to import them
- How do I convert kilometres to degrees in Geodjango/GEOS?
- How to add button to "submit_row" context in django
- Zip File downloaded from ReactJs/Axios is corrupted
3👍
I know old, but since this is so high on Google results, answers here don’t take into consideration two cases:
- If your time equals either of your range, ie your range is 6-8 and it is 6.
- If your time range is say 18:00 to 6:00, valid range; however 19:00 would not match.
I wrote a function to take care of time comparison, hope this helps anyone viewing this old question.
def process_time(intime, start, end):
if start <= intime <= end:
return True
elif start > end:
end_day = time(hour=23, minute=59, second=59, microsecond=999999)
if start <= intime <= end_day:
return True
elif intime <= end:
return True
return False
- Django templates – using block.super in included template fails (exception)
- Python Django Template: Iterate Through List
0👍
The datetimes getting tested need to all naive (no timezone) or all aware (timezone). An exception should occur if you try to compare aware and naive. If all the datetimes are aware the timezones don’t actually have to match that appears to be taken into consideration when comparing.
e.g.
class RND(datetime.tzinfo):
""" Random timezone UTC -3 """
def utcoffset(self, dt):
return datetime.timedelta(hours=-3)
def tzname(self, dt):
return "RND"
def dst(self, dt):
return datetime.timedelta(hours=0)
april_fools = datetime.datetime(year=2017, month=4, day=1, hour=12, tzinfo=pytz.UTC)
random_dt = datetime.datetime(year=2017, month=4, day=1, hour=9, tzinfo=RND())
random_dt == april_fools
# True as the same time when converted back to utc.
# Between test of 3 naive datetimes
start_spring = datetime.datetime(year=2018, month=3, day=20)
end_spring = datetime.datetime(year=2018, month=6, day=21)
april_fools = datetime.datetime(year=2018, month=4, day=1)
if start_spring < april_fools < end_spring:
print "April fools is in spring"
- Login_required decorator on ajax views to return 401 instead of 302
- Django is very slow on my machine
- Django select related in raw request
0👍
This is my script of checking the time between two different timeslots. One for morning and one for evening. This is the extended script using @Clifford’s script
def Strategy_Entry_Time_Check():
current_time = datetime.datetime.now()
#current_time = current_time.replace(hour=13, minute=29, second=00, microsecond=00) #For testing, edit the time
morning_start = current_time.replace(hour=9, minute=30, second=00, microsecond=00)
morning_end = current_time.replace(hour=11, minute=00, second=00, microsecond=00)
evening_start = current_time.replace(hour=13, minute=00, second=00, microsecond=00)
evening_end = current_time.replace(hour=15, minute=00, second=00, microsecond=00)
if morning_start <= current_time <= morning_end:
print("Morning Entry")
return True
elif evening_start <= current_time <= evening_end:
print("Evening Entry")
return True
print("No Entry")
return False