如何解决从datetime中提取时间并确定时间而非日期是否在范围内?
这行:
str_time = datetime.strptime(Datetime, "%m/%j/%y %H:%M")
您可以通过在解释器中交互式运行以下命令来自己进行测试:
>>> import datetime
>>> datetime.datetime.strptime('12/31/13 00:12', "%m/%j/%y %H:%M")
datetime.datetime(2013, 1, 31, 0, 12)
>>>
然后可以使用.time()
方法访问返回的日期时间的时间部分。
>>> datetime.datetime.strptime('12/31/13 00:12', "%m/%j/%y %H:%M").time()
datetime.time(0, 12)
>>>
datetime.time()
然后可以将结果用于时间比较。
解决方法
问题是我希望它忽略日期,而只考虑时间。这是我所拥有的:
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,1)
mornEnd = datetime.time(10,0)
# --> Midday = 1000-1600
midStart = datetime.time(10,1)
midEnd = datetime.time(16,0)
# --> Evening = 1600-2200
eveStart = datetime.time(16,1)
eveEnd = datetime.time(22,0)
# --> Late Night = 2200-0400
lateStart = datetime.time(22,1)
lateEnd = datetime.time(4,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
照原样,我得到这个错误:
TypeError: argument must be 9-item sequence,not datetime.datetime
当我将相关行更改为:
str_time = time.strptime(Datetime,"%m/%j/%y %H:%M")
我收到此错误:
TypeError: descriptor 'time' requires a 'datetime.datetime' object but received a 'int'
我知道我正在使用两个不同的库,但我不确定如何在它们之间进行转换或仅使用一个库就可以完成我想做的事情。我只希望它忽略日期,只检查时间是否在指定范围内。由于我在代码的其他地方使用了一个库,因此必须使用Python
2.6。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。