我有一个日期时间对象列表,日期范围跨越多年。
我想将这些日期分为2小时箱。因此,对于0小时箱,从23:00到1:00的所有日期时间都将在此箱中(+/- 1小时)。
最后,我想了一个bin中每个日期时间的索引列表。所以,如果我的日期时间列表类似于
datetime.datetime(2014, 10, 3, 20, 29, 54, 268074),
datetime.datetime(2014, 10, 4, 11, 28, 34, 59937),
datetime.datetime(2014, 10, 4, 19, 40, 39, 718856),
datetime.datetime(2016, 8, 18, 12, 17, 57, 417245),
datetime.datetime(2016, 8, 19, 1, 37, 57, 465573)
我想要一个列表结果,例如:
[[],
[4],
[],
[],
[],
[],
[1,3],
[],
[],
[],
[0,2],
[]]
其中result [0]给出一个与最接近0:00的日期时间对应的索引列表,result [0]给出最接近2:00的列表,等等。
我的第一个想法是使用datetime.time对象创建一个小时列表,然后从列表中减去一个日期时间并找到最小值。
import datetime
hrs = array([datetime.time(t) for t in arange(0,24,2)])
closetHr = min(hrs - times[0].time())
但是这给了我错误unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'
答案 0 :(得分:1)
这会产生样本输入的预期输出,避免时间减法:
DEVICE READY FIRED AFTER 1467 ms
Ionic Storage driver: cordovaSQLiteDriver
RAW_PHONE: null
Ionic Push: saved push token: cWPGBZzfchU:APA91bE5Rqk-mU4my7Avb689JRaWEA-b0mbkqPPiZui8M4bQR8TDayjwhLrS04Aj4qB9Y3_-IWLy9OoLrGaci5KhRvwgWkE4FZ4eSbgB2qkkql8Nk-oItgdo1ddN9vX_asyfYnys7TiK
Token saved: cWPGBZzfchU:APA91bE5Rqk-mU4my7Avb689JRaWEA-b0mbkqPPiZui8M4bQR8TDayjwhLrS04Aj4qB9Y3_-IWLy9OoLrGaci5KhRvwgWkE4FZ4eSbgB2qkkql8Nk-oItgdo1ddN9vX_asyfYnys7TiK
LOGIN RESPONSE: ok
LOGIN - SAVE PHONE: 55555
RESPONSE AFTER LOGIN: [object Object]
TRUCK NUMBER AFTER LOGIN: 3 (it means I successfuly got number and set in storage)
SAVED TRUCK: null (it means I try to get value from storage)
当值在奇数小时边界(即1:00)时,不清楚这是否符合您的要求,但是您没有指定。