Python开发【模块】:time、datatime
时间模块
时间相关的操作,时间有三种表示方式:
- 时间戳 1970年1月1日之后的秒,即:time.time()
- 格式化的字符串 2014-11-11 11:11, 即:time.strftime('%Y-%m-%d')
- 结构化时间 元组包含了:年、日、星期等... time.struct_time 即:time.localtime()
time模块:
# time模块
import time print(time.time()) # 时间戳
# 1472037866.0750718 print(time.localtime()) # 结构化时间
# time.struct_time(tm_year=2016, tm_mon=8, tm_mday=25, tm_hour=8, tm_min=44, tm_sec=46, tm_wday=3, tm_yday=238, tm_isdst=0) print(time.mktime(time.localtime()))
# 1498545592.0 print(time.strftime('%Y-%m-%d')) # 格式化的字符串
# 2016-08-25
print(time.strftime('%Y-%m-%d', time.localtime()))
# 2016-08-25 print(time.gmtime()) # 结构化时间
# time.struct_time(tm_year=2016, tm_mon=8, tm_mday=25, tm_hour=3, tm_min=8, tm_sec=48, tm_wday=3, tm_yday=238, tm_isdst=0) print(time.strptime('2014-11-11', '%Y-%m-%d')) # 结构化时间
# time.struct_time(tm_year=2014, tm_mon=11, tm_mday=11, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=315, tm_isdst=-1) print(time.asctime())
# Thu Aug 25 11:15:10 2016
print(time.asctime(time.localtime()))
# Thu Aug 25 11:15:10 2016
print(time.ctime(time.time()))
# Thu Aug 25 11:15:10 2016
结构化时间:

时间戳、格式化字符串、机构化时间相互转换:

datetime模块:
import datetime print(datetime.date) #表示日期的类。常用的属性有year, month, day
#<class 'datetime.date'>
print(datetime.time) #表示时间的类。常用的属性有hour, minute, second, microsecond
#<class 'datetime.time'>
print(datetime.datetime) #表示日期时间
#<class 'datetime.datetime'>
print(datetime.timedelta) #表示时间间隔,即两个时间点之间的长度
#<class 'datetime.timedelta'> print(datetime.datetime.now())
#2016-08-25 14:21:07.722285
print(datetime.datetime.now() - datetime.timedelta(days=5))
#2016-08-20 14:21:28.275460
时间比较、运算:
import time str = '2017-03-26 3:12'
str2 = '2017-07-26 13:12'
date1 = time.strptime(str, '%Y-%m-%d %H:%M')
date2 = time.strptime(str2, '%Y-%m-%d %H:%M')
if float(time.time()) >= float(time.mktime(date1)) and float(time.time()) <= float(time.mktime(date2)):
print 'cccccccc'
if time.localtime() >= date1 and time.localtime() <= date2:
print 'zzzzzzzz' import datetime str = '2017-03-26 3:12'
str2 = '2017-05-26 13:12'
date1 = datetime.datetime.strptime(str,'%Y-%m-%d %H:%M')
date2 = datetime.datetime.strptime(str2,'%Y-%m-%d %H:%M')
datenow = datetime.datetime.now()
if datenow <date1:
print 'dddddd'
时间戳转为时间字符串:
import time stime = time.time()
# 1512713749.85
stime = time.gmtime(stime)
# time.struct_time(tm_year=2017, tm_mon=12, tm_mday=8, tm_hour=6, tm_min=15, tm_sec=49, tm_wday=4, tm_yday=342, tm_isdst=0)
stime = time.strftime('%Y-%m-%d %H:%M:%S',stime)
# 2017-12-08 06:15:49
datetime.datetime转为时间戳:
import datetime
import time dtime = datetime.datetime.now()
print(dtime)
# 2018-09-14 14:19:38.291610
print(type(dtime))
# <class 'datetime.datetime'>
timestamp_time = time.mktime(dtime.timetuple())
print(timestamp_time)
# 1536905978.0
print(type(timestamp_time))
# <class 'float'>
定时每天几点执行任务:
# 定时时间,每天执行
START_TIME_HOUR = 2 # 时
START_TIME_MINUTE = 00 # 分
date = datetime.datetime.now()
excute_time = '%s %s:%s' % (time.strftime('%Y-%m-%d'), START_TIME_HOUR, START_TIME_MINUTE)
excute_time = time.strptime(excute_time, '%Y-%m-%d %H:%M')
excute_time = time.mktime(excute_time)
if date.hour > START_TIME_HOUR:
excute_time += 24 * 60 * 60 # 加一天
elif date.hour == START_TIME_HOUR and date.minute >= START_TIME_MINUTE :
excute_time += 24 * 60 * 60 # 加一天
logging.info('timer wait %s',excute_time-time.time())
timer = threading.Timer(excute_time-time.time(),execute)
timer.start()
Mysql数据库中DATETIME字段运算
sql = "SELECT * FROM cdr.tx_cdr_master WHERE id = '205542246'"
cursor.execute(sql)
database = cursor.fetchone()
print(database)
print(type(database['stime']))
print(database['stime'])
ndate = datetime.datetime.now() - datetime.timedelta(days=0.5)
print(ndate)
if database['stime'] < ndate:
print('***') {'id': 205542246, 'requestid': '', 'callid': '000c29be8df6a5a611e8c0a621d83c3c', 'calltype': 1, 'direction': 1, 'caller': '18612721422', 'callee': '', 'dh': '01053180014', 'callresult': 2, 'stime': datetime.datetime(2018, 9, 25, 17, 33, 59), 'etime': datetime.datetime(2018, 9, 25, 17, 34, 6), 'rec_path': '', 'serverid': 'asterisk2', 'taskid': '', 'agentid': '', 'agentgrpid': '', 'compid': '800085', 'feetime': 6, 'totaltime': 7, 'fee': Decimal('11.00'), 'flags': 3, 'hanguper': 1, 'caller_area': '??-??', 'callee_area': '', 'ifhandle': b'\x01', 'isfee': 1, 'ref': '', 'feedate': datetime.datetime(2018, 9, 25, 17, 34, 25), 'createdate': datetime.datetime(2018, 9, 25, 17, 34, 6), 'SerialNumber': 0, 'userphone': '18612721422', 'user_area': '??-??'}
<class 'datetime.datetime'>
2018-09-25 17:33:59
2018-09-25 23:51:03.852978
***
Python开发【模块】:time、datatime的更多相关文章
- python开发模块基础:re正则
一,re模块的用法 #findall #直接返回一个列表 #正常的正则表达式 #但是只会把分组里的显示出来#search #返回一个对象 .group()#match #返回一个对象 .group() ...
- python开发模块基础:异常处理&hashlib&logging&configparser
一,异常处理 # 异常处理代码 try: f = open('file', 'w') except ValueError: print('请输入一个数字') except Exception as e ...
- python开发模块基础:os&sys
一,os模块 os模块是与操作系统交互的一个接口 #!/usr/bin/env python #_*_coding:utf-8_*_ ''' os.walk() 显示目录下所有文件和子目录以元祖的形式 ...
- python开发模块基础:序列化模块json,pickle,shelve
一,为什么要序列化 # 将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化'''比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给?现在我们能想到的方法就是存在文 ...
- python开发模块基础:time&random
一,time模块 和时间有关系的我们就要用到时间模块.在使用模块之前,应该首先导入这个模块 常用方法1.(线程)推迟指定的时间运行.单位为秒. time.sleep(1) #括号内为整数 2.获取当前 ...
- python开发模块基础:collections模块¶miko模块
一,collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdic ...
- python开发模块基础:正则表达式
一,正则表达式 1.字符组:[0-9][a-z][A-Z] 在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[]表示字符分为很多类,比如数字.字母.标点等等.假如你现在要求一个位置&q ...
- Python开发——目录
Python基础 Python开发——解释器安装 Python开发——基础 Python开发——变量 Python开发——[选择]语句 Python开发——[循环]语句 Python开发——数据类型[ ...
- Python开发【第六篇】:模块
模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...
- python辅助开发模块(非官方)如pil,mysqldb,openpyxl,xlrd,xlwd
官方文档 只是支持win32, 不支持win64 所以很麻烦 民间高人,集中做了一堆辅助库,下载后,用python安装目录下的scripts中,pip和easy_install就可以安装了 pytho ...
随机推荐
- 【Java集合的详细研究5】Java中Array与ArrayList的主要区别
1)精辟阐述:可以将 ArrayList想象成一种“会自动扩增容量的Array”. 2)Array([]):最高效:但是其容量固定且无法动态改变: ArrayList: 容量可动态增长:但牺 ...
- js中的var
vars变量预解析 JavaScript中,你可以在函数的任何位置声明多个var语句,并且它们就好像是在函数顶部声明一样发挥作用,这种行为称为 hoisting(悬置/置顶解析/预解析).当你使用了一 ...
- 监听程序未启动或数据库服务未注册到该监听程序。启动该监听程序并注册数据库服务 然后重新运行 em configuration assistant。
在WIN 7/64Bit上安装ORACLE 11gR2后,管理网页Database Control(如:https://localhost:1158/em)始终登录不进去,总是说密码错误,使用配置工具 ...
- Unity3D手机平台分辨率自动匹配教程
1. 下载NGUI 2. 导入NGUI package到Unity. 这时候菜单上会出现NGUI的菜单栏: 3. 将默认的Main Camera删掉,通过菜单栏NGUI->Create新建一个2 ...
- 如何快捷地使用ChemBio 3D检查结构信息
ChemBio 3D是一款三维分子结构演示软件,能够轻松快捷地进行化学结构的制作和立体旋转.ChemBio 3D Ultra 14作为ChemBio 3D的最新版本可以更加快捷地制作化学结构.本教程将 ...
- 使用ADO实现BLOB数据的存取 -- ADO开发实践之二
使用ADO实现BLOB数据的存取 -- ADO开发实践之二 http://www.360doc.com/content/11/0113/16/4780948_86256633.shtml 一.前言 在 ...
- Chrome各个版本小常识
摘要: 近期在网上看到chrome有个金丝雀版,第一次看到这个版本,所以就将chrome的各个版本进行了了解,chrome是前端开发最好用的工具,不仅仅是它的调试工具,还有他对HTML5/CSS3的兼 ...
- 2014年王道论坛研究生机试练习赛(一) set 1 GrassLand密码
题目 根据手机按键上的对应关系将字母转成数字, 简单模拟题 总结 1. scanf("%s", input); 不需要加上 & 2. 字符串的终结符是 '\0' 3. sc ...
- ARM漏洞
Google安全团队Project Zero公布了多个高危漏洞,称这些漏洞几乎影响到了市面上所有的微处理器,AMD.ARM还是英特尔的处理器都难以幸免,围绕这些处理器打造的操作系统和硬件设备也会受到影 ...
- iOS-代码修改Info.plist文件
解决办法: 1.首先系统的Info.Plist文件是只读文件 并不能 写入.目前我个人是没有办法存入,官方属性 可以看到是readOnly 2.那么我们 就想代码修改Info.Plist文件怎么办呢, ...