|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 cnkizy 于 2018-1-30 13:56 编辑
这个难题是我在实际工作中遇到的,代码目的是用来统计某个上位机app发送数据的时长,应客户要求被领导故意设计成这样的,要是我才不会这么写呢,也怪自己算法学的差,数据结构学的差。导致加班加到凌晨,脑袋爆炸。现在想想还是耿耿于怀,现在和鱼友们一起看看是啥题。
首先定义以下时间概念
Day Middle Night
[22:00-6:00) [6:00-14:00) [14:00-22:00)
'['是开区间符号 ')'是闭区间符号
上面的话翻译过来意思是
昨晚22:00 - 今天的5:59:59 这个时间段为 'Day'
今天6:00 - 今天的13:59:59 这个时间段为 'Middle'
今天14:00 - 今天的21:59:59 这个时间段为 'Night'
我当时使用的时间格式是‘yyyy-MM-dd HH:mm:ss’ 当然了这里看鱼油爱好了,随意吧。以下时间不足1小时按1小时计算
现给出一段时间
# [0]起始时间,[1]结束时间
- timeArray = [('10:00','18:00'), #假设这天是1月1日
- ('12:00','14:00'), #假设这天是1月2日
- ('13:00','19:00'), #假设这天是1月3日
- ('9:00','5:00') #假设这天是1月4日
- ]
复制代码
输出的结果是
>>1月1日 Day:4,Middle:4,Night:0
>>1月2日 Day:2,Middle:0,Night:0
>>1月3日 Day:0,Middle:1,Night:3
>>1月4日 Day:5,Middle:8,Night:1
我来分析下 第1个
10:00 在 'Day' 区间 14:00(day结束位置) - 10:00 = 4
18:00 在 'Middle'区间 18:00 - 14:00(mid起始位置) = 4
'Night' 区间 None = 0
第2个
12:00 在 'Day' 区间 14:00 - 12:00 = 2
14:00 在 'Middle'区间 14:00 - 14:00 = 0
'Night' 区间 None = 0
第3个
'Day' 区间 None = 0
13:00 在 'Middle'区间 14:00 - 13:00 = 1
19:00 在 'Night' 区间 22:00 - 19:00 = 3
第4个
9:00 在 'Day' 区间 14:00 - 9:00 = 5
经过 'Middle'区间 = 8
5:00 在 'Night' 区间 6:00-5:00 = 1
总体说来也不算太难,要冷静分析,我当时加班加糊涂了,乱写一通,结果对就Ok了,也不管有无BUG。 希望接手的兄dei不要来砍我。
如果有不完整或疏漏的地方请予以指正,我会尽快修正,谢谢各位鱼油。
|
|