时间模块

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

  • 时间戳               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. 【Java面试题】45 什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。

    我们有时候将一个java对象变成字节流的形式传出去或者从一个字节流中恢复成一个java对象,例如,要将java对象存储到硬盘或者传送给网络上的其他计算机,这个过程我们可以自己写代码去把一个java对象 ...

  2. 最有价值的50道java面试题 适用于准入职Java程序员

    下面的内容是对网上原有的Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,原来的题目中有很多重复题目和无价值的题目,还有不少的参考答案也是错误的,修改后的Java面试题集参照了JDK最 ...

  3. openal 基础知识

    原文地址:http://blog.csdn.net/woker/article/details/8687380 一简介 OpenAL抽象出三种基本对象:buffers(缓冲区).sources(源). ...

  4. 动态生成的DOM不会触发onclick事件的原因及解决方法

    最近朋友在做一个项目的时候,遇到动态加载微博内容,然后点击“展开评论”后获取该微博的所有评论.这里使用了动态加载的<span mid='123456789′ class='get_comment ...

  5. MathType在字母上加虚线的方法

    在数学中根据不同的需要,会对其中的公式或变量字母作不同的标记.这些标记在用MathType编辑数学公式时同样也要准确地编辑出来,例如在字母上方加虚线.这种数学样式在使用时也是根据自己的数学问题来使用的 ...

  6. CSS实现圆角的方法

    <style type="text/css"> body,p,div {margin:0;padding:0;} .Box {margin:10px auto;widt ...

  7. Nginx伪静态配置和常用Rewrite伪静态规则集锦

    伪静态是一种可以把文件后缀改成任何可能的一种方法,如果我想把php文件伪静态成html文件,这种相当简单的,下面我来介绍nginx 伪静态配置方法 nginx里使用伪静态是直接在nginx.conf ...

  8. 【spring教程之中的一个】创建一个最简单的spring样例

    1.首先spring的主要思想,就是依赖注入.简单来说.就是不须要手动new对象,而这些对象由spring容器统一进行管理. 2.样例结构 如上图所看到的,採用的是mavenproject. 2.po ...

  9. 深入volley(三)自己来写volley

    https://github.com/Smalinuxer/android-SpillOver 这是我自己写的一个请求缓存框架,基于volley的,沿袭了volley的架构与设计思想,而对其进一步的封 ...

  10. ios开发之--简单动画效果的添加

    记录一个简单的动画效果,自己写的,很简单,仅做记录. 附一个demo的下载地址: https://github.com/hgl753951/hglTest.git 代码如下: 1,准备 BOOL _i ...