The problem is that I want it to ignore the date and only factor in the time. Here is what I have:
import time from time import mktime from datetime import datetime def getTimeCat(Datetime): # extract time categories str_time = datetime.strptime(Datetime, "%m/%j/%y %H:%M") ts = datetime.fromtimestamp(mktime(str_time)) # --> Morning = 0400-1000 mornStart = datetime.time(4, 0, 1) mornEnd = datetime.time(10, 0, 0) # --> Midday = 1000-1600 midStart = datetime.time(10, 0, 1) midEnd = datetime.time(16, 0, 0) # --> Evening = 1600-2200 eveStart = datetime.time(16, 0, 1) eveEnd = datetime.time(22, 0, 0) # --> Late Night = 2200-0400 lateStart = datetime.time(22, 0, 1) lateEnd = datetime.time(4, 0, 0) if time_in_range(mornStart, mornEnd, ts): timecat = 0 #morning elif time_in_range(midStart, midEnd, ts): timecat = 1 #midday elif time_in_range(eveStart, eveEnd, ts): timecat = 2 #evening elif time_in_range(lateStart, lateEnd, ts): timecat = 3 #late night return timecat
As is, I get this error:
TypeError: argument must be 9-item sequence, not datetime.datetime
When I change the relevant line to:
str_time = time.strptime(Datetime, "%m/%j/%y %H:%M")
I get this error:
TypeError: descriptor 'time' requires a 'datetime.datetime' object but received a 'int'
I know I'm working with two different libraries or whatnot, but I'm not sure how to convert between them or accomplish what I want to do only using one. I just want it to ignore the date and only check if the time is within the specified ranges. Python 2.6 is a MUST due to a library I'm using elsewhere in the code.
Datetime objects are comparable, so you can compare datetime objects using the < , > , <= , >= , and == comparison operators. Therefore, you can use the expression start <= current <= end to check if a current time falls into the interval [start, end] when assuming that start , end , and current are datetime objects.
Try something like the following: >>> d = datetime. datetime. utcnow() >>> print d 2015-06-17 11:39:48.585000 >>> d.
e.g., datetime_obj = datetime. strptime(“19022002101010″,”%d%m%Y%H%M%S”) # It will return the datetime object.
How to Get the Current Time with the datetime Module. To get the current time in particular, you can use the strftime() method and pass into it the string ”%H:%M:%S” representing hours, minutes, and seconds.
This line:
str_time = datetime.strptime(Datetime, "%m/%j/%y %H:%M")
returns a datetime
object as per the docs.
You can test this yourself by running the following command interactively in the interpreter:
>>> import datetime >>> datetime.datetime.strptime('12/31/13 00:12', "%m/%j/%y %H:%M") datetime.datetime(2013, 1, 31, 0, 12) >>>
The time portion of the returned datetime can then be accessed using the .time()
method.
>>> datetime.datetime.strptime('12/31/13 00:12', "%m/%j/%y %H:%M").time() datetime.time(0, 12) >>>
The datetime.time()
result can then be used in your time comparisons.
Use this only gives you time.
from datetime import datetime now = datetime.now() current_time = now.strftime("%H:%M:%S") print("Current Time =", current_time)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With