python获取指定时间段内的随机不重复的时间点
上篇 《python时间时分秒与秒数的互相转换》http://www.cnblogs.com/gayhub/p/6154707.html 提到了把时间转成秒数的方法,
这篇写写转换成秒数后有些什么用处。
场景1:取N个07:30:00-09:30:33之间的随机时间。
下面是我的代码: | | | import random | | st = "07:30:00" | | et = "09:30:33" | | | | def time2seconds(t): | | h,m,s = t.strip().split(":") | | return int(h) * 3600 + int(m) * 60 + int(s) | | | | def seconds2time(sec): | | m,s = divmod(sec,60) | | h,m = divmod(m,60) | | return "%02d:%02d:%02d" % (h,m,s) | | | | sts = time2seconds(st) | | ets = time2seconds(et) | | | | rt = random.sample(range(sts,ets),10) | | | | | | rt.sort() | | | | | | for r in rt: | | print(seconds2time(r)) | | | | """ | | 输出: | | 07:43:12 | | 07:54:31 | | 08:08:33 | | 08:27:46 | | 08:46:53 | | 08:48:17 | | 08:55:20 | | 08:59:16 | | 09:10:23 | | 09:15:58 | | """COPY |
从代码中可以发现思路是把时间转成秒数后,那么就可以用range生07:30-09:30之间的时间秒数,再用random.sample从中取出个N个秒数,最后再把秒数转成所需要的时间格式。
场景2: 时间大小比较和时间范围的判断 | >>> "09:30:00" > "9:30:00" | | False | | >>> "09:30:00" == "9:30:00" | | FalseCOPY |
基于字符串的判断可能会出现像上面的情况,我感觉统一转成数字后再计算更可靠。
场景3:时间转成秒数后刚好等于1970年1月1日的时间戳
参考维基百科:https://zh.wikipedia.org/wiki/%E ... 6%E7%95%8C%E6%97%B6
UNIX时间,或称POSIX时间是UNIX或类UNIX系统使用的时间表示方式:从协调世界时1970年1月1日0时0分0秒起至现在的总秒数。
任意当天24小时内的时间转成秒数后都刚好等于UTC 1970年1月1日的时间戳。所以有需要的话可以使用编程语言内置的时间戳函数进行转换。 |