从一次到另一次获取数据

时间:2014-11-13 11:15:04

标签: python datetime time

我有一个UNIX时间纪元的数据。我试图仅分离特定时间范围内的数据。

例如:仅在上午8点到晚上8点之间的完整数据。即所有落在时间范围之间的数据。

任何建议如何开始请。我知道这不是提供服务的代码。我真的很想知道如何从这种分离开始。要考虑的时区是UTC +8.00。

Input data: col[2] col[3] are the start time and stop time respectively.

11048 10386 1171753215 1171753234 19 
83987 85230 1171753213 1171753234 21 
83987 86390 1171753213 1171753236 23 
6574 12027 1171753212 1171753233 21 
10788 40054 1171753217 1171753236 19 
70178 6574 1171753209 1171753229 20 
85241 87329 1171753205 1171753233 28 
81532 88962 1171753208 1171753231 23 
85271 82494 1171753213 1171753234 21 
2210 6774 1171753210 1171753234 24 
87563 11146 1171753203 1171753226 23 
87563 84877 1171753203 1171753228 25 
87563 40000 1171753203 1171753229 26 

我需要将属于特定时间范围的 col [2] col [3] 的数据分开。应该可以在需要时更改时间范围。

1 个答案:

答案 0 :(得分:1)

您实际上需要比较日期时间对象,因为t1.hour >= 8 and t2.hour <= 20将返回20.01等的真实

from datetime import datetime,time

s = "11048 10386 11717532234 1171753234 19"

start = time(8, 0, 0) # start 8:00:00 am
end = time(20, 0, 0) # end 8:00:00 pm
spl = s.split() # split line 

# convert col 2 and 3 to datetime objects
t1 = datetime.fromtimestamp(float(spl[2])).time()
t2 = datetime.fromtimestamp(float(spl[3])).time()

print(t1 >= start and t2 <= end)

要将数据提取到文件:

from datetime import datetime,time

start = time(8, 0, 0)
end = time(20, 0, 0)
with open("input.txt") as f,open("output.txt","w") as f1:
    for line in f:
        spl = line.split()
        t1 = datetime.fromtimestamp(float(spl[2])).time()
        t2 = datetime.fromtimestamp(float(spl[3])).time()
        if t1 >= start and t2 <= end:
            f1.write(line)