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 ...
随机推荐
- UART通信协议
第一部分: UART使用的是 异步,串行通信. 串行通信是指利用一条传输线将资料一位位地顺序传送.特点是通信线路简单,利用简单的线缆就可实现通信,降低成本,适用于远距离通信,但传输速度慢的应用场 ...
- Linux基础知识之man手册的使用
在Linux中man的使用频率应该是很高的,灵活运用它可以让自己快速的掌握一个不熟悉命令的使用方法.下面来介绍下man 环境CentOS6.8 man - format and display the ...
- poj 3740 Easy Finding(Dancing Links)
Easy Finding Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 15668 Accepted: 4163 Des ...
- 【Mongo】数据备份与还原
http://blog.51yip.com/nosql/1573.html mongorestore -d 数据库名 -c 集合名 --drop **.bson
- 【matlab】error:试图访问 im2(1,1211);由于 size(im2)=[675,1210],索引超出范围。
试图访问 im2(1,1211):由于 size(im2)=[675,1210],索引超出范围. 出错 dect (line 14) if abs((im2(i,j))-(im1(i,j)))> ...
- Dedecms当前位置{dede:field name='position'/}修改,去掉>方法
Dedecms当前位置{dede:field name='position'/}修改,如何去掉> 一.修改{dede:field name='position'/}的文字间隔符,官方默认的是&g ...
- 百度地图api ak值
http://api.map.baidu.com/geocoder/v2/?ak=859d16285fd000feec89e9032513f8bb&callback=renderReverse ...
- 2014年辛星解读Javascript之DOM之事件及其绑定
我们通过DOM的事件能够对HTML的事件作出反应.就像我们用其它编程语言写GUI一样,那么HTML包含哪些事件呢?以下是几个常见的样例,比方网页已经完毕记载,图像完毕载入,鼠标移动到元素上方.输入文字 ...
- SDUT -refresh的停车场(栈和队列)
题目描写叙述 refresh近期发了一笔横財,开了一家停车场.因为土地有限,停车场内停车数量有限,可是要求进停车场的车辆过多. 当停车场满时,要进入的车辆会进入便道等待.最先进入便道的车辆会优先 进 ...
- Maven(二)-- 搭建私服,上传jar
一.在setting中配置 私服的镜像,在mirrors标签中加上: <!--第一步 配置私服的镜像--> <mirror> <!--此处配置所有的构建均从私有仓库中下载 ...