python获取指定时间段内的随机不重复的时间点
上篇 《python时间时分秒与秒数的互相转换》http://www.cnblogs.com/gayhub/p/6154707.html 提到了把时间转成秒数的方法,
这篇写写转换成秒数后有些什么用处。
场景1:取N个07:30:00-09:30:33之间的随机时间。
下面是我的代码:
#2016-12-10 7:06:29 codegay
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) #sts==27000
ets = time2seconds(et) #ets==34233
rt = random.sample(range(sts,ets),10)
#rt == [28931, 29977, 33207, 33082, 31174, 30200, 27458, 27434, 33367, 30450]
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
"""
从代码中可以发现思路是把时间转成秒数后,那么就可以用range生07:30-09:30之间的时间秒数,再用random.sample从中取出个N个秒数,最后再把秒数转成所需要的时间格式。
场景2: 时间大小比较和时间范围的判断
>>> "09:30:00" > "9:30:00"
False
>>> "09:30:00" == "9:30:00"
False
基于字符串的判断可能会出现像上面的情况,我感觉统一转成数字后再计算更可靠。
场景3:时间转成秒数后刚好等于1970年1月1日的时间戳
参考维基百科:https://zh.wikipedia.org/wiki/协调世界时
UNIX时间,或称POSIX时间是UNIX或类UNIX系统使用的时间表示方式:从协调世界时1970年1月1日0时0分0秒起至现在的总秒数。
任意当天24小时内的时间转成秒数后都刚好等于UTC 1970年1月1日的时间戳。所以有需要的话可以使用编程语言内置的时间戳函数进行转换。
python获取指定时间段内的随机不重复的时间点的更多相关文章
- 随机获取指定范围内N个不重复数字
/// <summary> /// 随机获取指定范围内N个不重复数字 /// </summary> /// <param name="min"> ...
- 【前端】JavaScript获取指定范围内的随机整数
function getRandomIntNumber(min, max) { var span = max - min + 1; var result = Math.floor(Math.rando ...
- SQL Server中获取指定时间段内的所有月份
例如查询 2012-1-5 到 2012-11-3 之间所有的月份 declare @begin datetime,@end datetime set @begin='2012-1-5' set @e ...
- SQL Server中获取指定时间段内的所有日期
DECLARE @days INT, @date_start DATETIME = '2016-11-01', @date_end DATETIME = '2016-11-10' SET @days ...
- Java获取指定时间段的年份(开始、结束时间)、月份(开始、结束时间)、天数(开始、结束时间)
package test; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleD ...
- Java产生指定范围内的随机日期
要想产生指定范围内的随机日期,首先我们要指定一个范围,那么我们可以通过SImpleDateFormat格式化日期,然后再通过parse()方法设置日期,返回一个Date类型的日期对象,再转化为时间戳( ...
- 随机指定范围内N个不重复的数
此为工具类,支持抽奖业务需求,具体实现见下方代码: package com.org.test; import java.util.ArrayList; import java.util.List; p ...
- oracle 根据一个时间段获取这个时间段内所有月份、天数、日期
注:本文来源于< oracle 根据一个时间段获取这个时间段内所有月份.天数.日期 > 获取月份列表: SELECT TO_CHAR(ADD_MONTHS(TO_DATE('2014-10 ...
- python获取指定目录下所有文件名os.walk和os.listdir
python获取指定目录下所有文件名os.walk和os.listdir 觉得有用的话,欢迎一起讨论相互学习~Follow Me os.walk 返回指定路径下所有文件和子文件夹中所有文件列表 其中文 ...
随机推荐
- JQuery_DOM 节点操作之包裹节点
jQuery 提供了一系列方法用于包裹节点,那包裹节点是什么意思呢?其实就是使用字符串代码将指定元素的代码包含着的意思. <script type="text/javascript&q ...
- MySQL 语句使用到的关键字 函数 记录
一 处理重复数据 1 使用 UNIQUE 唯一键 (添加数据) 创建表的时候设置 2 使用 DISTINCT (查询数据--过滤) eg:SELECT DISTINCT `name` from ...
- viewPager + fragment
有两种实现方式,一种是 fragmentActivity + FragmentPagerAdapter (Fragment,FragmentManager需要导包:android.support.v4 ...
- Android之mtk上传log
Android之mtk上传log 1,打开浏览器 2.输入地址http://eservice.mediatek.com/eservice-portal/login 3.输入用户名,密码 4.提eser ...
- 火狐浏览器 js 1到9月份 new DATE不返回时间
new Date('2016-1'); //错误 1到9月份必须 01 02 ...... 正确 new Date('2016-01'); var nowMonth = nowMonth>=10 ...
- python3 实现简单信用卡管理程序
1.程序执行代码: #Author by Andy #_*_ coding:utf-8 _*_ import os,sys,time Base_dir=os.path.dirname(os.path. ...
- css学习记录
1 !important 表示此属性需要优先考虑: <head> <title>Page Title</title> <style type=&q ...
- underscore源码解析 (转载)
转载出自http://www.cnblogs.com/human/p/3273616.html (function() { // 创建一个全局对象, 在浏览器中表示为window对象, 在Node.j ...
- Appium之python API
webdriver contexts(self) 说明:返回多个会话内容 使用:driver.contexts current_context(self) 说明:返回单个会话的内容 使用:driver ...
- [hadoop] hadoop-all-in-one-伪分布式安装
hadoop伪分布式-all-in-one安装 #查看hadoop 版本 [root@hadoop-allinone-200-123 bin]# pwd /wdcloud/app/hadoop-2.7 ...