时间模块

时间相关的操作,时间有三种表示方式:

  • 时间戳               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的更多相关文章

  1. python开发模块基础:re正则

    一,re模块的用法 #findall #直接返回一个列表 #正常的正则表达式 #但是只会把分组里的显示出来#search #返回一个对象 .group()#match #返回一个对象 .group() ...

  2. python开发模块基础:异常处理&hashlib&logging&configparser

    一,异常处理 # 异常处理代码 try: f = open('file', 'w') except ValueError: print('请输入一个数字') except Exception as e ...

  3. python开发模块基础:os&sys

    一,os模块 os模块是与操作系统交互的一个接口 #!/usr/bin/env python #_*_coding:utf-8_*_ ''' os.walk() 显示目录下所有文件和子目录以元祖的形式 ...

  4. python开发模块基础:序列化模块json,pickle,shelve

    一,为什么要序列化 # 将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化'''比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给?现在我们能想到的方法就是存在文 ...

  5. python开发模块基础:time&random

    一,time模块 和时间有关系的我们就要用到时间模块.在使用模块之前,应该首先导入这个模块 常用方法1.(线程)推迟指定的时间运行.单位为秒. time.sleep(1) #括号内为整数 2.获取当前 ...

  6. python开发模块基础:collections模块&paramiko模块

    一,collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdic ...

  7. python开发模块基础:正则表达式

    一,正则表达式 1.字符组:[0-9][a-z][A-Z] 在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[]表示字符分为很多类,比如数字.字母.标点等等.假如你现在要求一个位置&q ...

  8. Python开发——目录

    Python基础 Python开发——解释器安装 Python开发——基础 Python开发——变量 Python开发——[选择]语句 Python开发——[循环]语句 Python开发——数据类型[ ...

  9. Python开发【第六篇】:模块

    模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...

  10. python辅助开发模块(非官方)如pil,mysqldb,openpyxl,xlrd,xlwd

    官方文档 只是支持win32, 不支持win64 所以很麻烦 民间高人,集中做了一堆辅助库,下载后,用python安装目录下的scripts中,pip和easy_install就可以安装了 pytho ...

随机推荐

  1. QListView的子项的ViewMode

    QListView.setViewMode(ViewMode mode) enum QListView::ViewMode Constant    Value    DescriptionQListV ...

  2. vncserver的安装和使用

    环境:RedHat Linux 6企业版.Xwindows:gnome (红帽默认安装的图形界面) 尽管我们可以使用SSH连接远程通过字符界面来操作Linux,但是对于更多熟悉图形人来说是很不方便的, ...

  3. hdu5087——Revenge of LIS II

    Revenge of LIS II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  4. git 分支的创建、合并、删除

          基本概念与命令 分支(branch):每次提交,Git都把提交的内容串成一条时间线,这条时间线就是一个分支 .   git 分支的创建 git branch branchName git ...

  5. ASP.NET中相对路径的使用总结

    如果有一个网站上的图片的路径是这样的: http://localhost:2008/websit1/images/1.jpg websit1表示的是虚拟路径或者是站点 在asp.net中,如果我们在. ...

  6. jQuery中animate()的方法以及$(&quot;body&quot;).animate({&quot;scrollTop&quot;:top})不被Firefox支持问题的解决

    转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/50846678 本文出自[我是干勾鱼的博客] jQuery中animate()的方 ...

  7. 更改VS2010的[默认开发语言]

    1.菜单-->"工具"-->"导入导出设置".例如以下图: 2.选择"重置全部设置",例如以下图: 3.重置设置,例如以下图: ...

  8. Linux 远程同步:rsync

    rsync 简介: (1) rsync 是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机间的文件(2) rsync 使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步 ...

  9. 导入google地图

    一直报地图页面的 java.lang.incompatibleclasschangeerror 想来想去,应该是包不兼容的原因,原本以为,在 build.gradle 里面 compileSdkVer ...

  10. 新唐M0 M4系统初始化

    系统初始化包含了时钟(clock)初始化和多功能引脚(Multi Function Pin 简称MFP寄存器)配置.void SYS_Init(void) { /* 解锁保护寄存器 */ SYS_Un ...