Python计时相关操作详解【time,datetime】


Posted in Python onMay 26, 2017

本文实例讲述了Python计时相关操作。分享给大家供大家参考,具体如下:

内容目录:

1. 时间戳
2. 当前时间
3. 时间差
4. python中时间日期格式化符号
5. 例子

一、时间戳

时间戳是自 1970 年 1 月 1 日(08:00:00 GMT)至当前时间的总秒数。它也被称为 Unix 时间戳(Unix Timestamp),它在unix、c的世界里随处可见;常见形态是浮点数,小数点后面是毫秒。两个时间戳相减就是时间间隔(单位:秒)。

例:

import time
time1 = time.time()
time.sleep(15)
time2 = time.time()
print time2 - time1

其中,time.sleep()是休眠函数,单位:秒。

二、当前时间

>>> import datetime,time
>>> now = time.strftime("%Y-%m-%d %H:%M:%S")
>>> print now
2016-04-30 17:02:26
>>> now = datetime.datetime.now()
>>> print now

三、时间差

#1 昨天00:00到昨天23:59

>>> import datetime
>>> yestoday = datetime.datetime.now() - datetime.timedelta(days=1)
>>> t1 = "%s-00-00-00" % yestoday.strftime("%Y-%m-%d")
>>> t2 = "%s-23-59-59" % yestoday.strftime("%Y-%m-%d")
>>> print 't1', t1
t1 2016-04-29-00-00-00
>>> print 't2', t2
t2 2016-04-29-23-59-59

#2 现在往后10小时

>>> d1 = datetime.datetime.now()
>>> d3 = d1 + datetime.timedelta(hours=10)
>>> d3.ctime()
'Sun May 1 03:09:58 2

#3 这么一会的秒数、微妙数(注意是取秒、微妙部分,并不是等价转换)

>>> import datetime
>>> starttime = datetime.datetime.now()
>>> endtime = datetime.datetime.now()
>>> starttime = datetime.datetime.now()
>>> endtime = datetime.datetime.now()
>>> print endtime - starttime
0:00:07.390988
>>> print (endtime - starttime).seconds
7
>>> print (endtime - starttime).microseconds
390988

文件的时间戳

>>> import os
>>> statinfo=os.stat(r"C:/1.txt")
>>> statinfo
(33206, 0L, 0, 0, 0, 0, 29L, 1201865413, 1201867904, 1201865413)

注:使用os.stat的返回值statinfo中的后三项是文件的st_atime (访问时间), st_mtime (修改时间), st_ctime(创建时间),例如,取得文件修改时间:

>>> statinfo.st_mtime
1201865413.8952832

注:这个时间是一个linux时间戳,可以转换成易于理解的格式:

>>> import time
>>> time.localtime(statinfo.st_ctime)
(2008, 2, 1, 19, 30, 13, 4, 32, 0)

注:2008年2月1日的19时30分13秒(2008-2-1 19:30:13)

四、python中时间日期格式化符号

%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身

五、例子

#! coding:utf-8
''''' 日期相关的操作 '''
from datetime import datetime
from datetime import timedelta
import calendar
DATE_FMT = '%Y-%m-%d'
DATETIME_FMT = '%Y-%m-%d %H:%M:%S'
DATE_US_FMT = '%d/%m/%Y'
'''''
格式化常用的几个参数
Y : 1999
y :99
m : mouth 02 12
M : minute 00-59
S : second
d : day
H : hour
'''
def dateToStr(date):
  '''''把datetime类型的时间格式化自己想要的格式'''
  return datetime.strftime(date, DATETIME_FMT)
def strToDate(strdate):
  '''''把str变成日期用来做一些操作'''
  return datetime.strptime(strdate, DATETIME_FMT)
def timeElement():
  '''''获取一个时间对象的各个元素'''
  now = datetime.today()
  print 'year: %s month: %s day: %s' %(now.year, now.month, now.day)
  print 'hour: %s minute: %s second: %s' %(now.hour, now.minute, now.second)
  print 'weekday: %s ' %(now.weekday()+1) #一周是从0开始的
def timeAdd():
  '''''
  时间的加减,前一天后一天等操作
  datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])
  参数可以是正数也可以是负数
  得到的对象可以加也可以减 乘以数字和求绝对值
  '''
  atime = timedelta(days=-1)
  now = datetime.strptime('2001-01-30 11:01:02', DATETIME_FMT)
  print now + atime
  print now - abs(atime)
  print now - abs(atime)*31
def lastFirday():
   today = datetime.today()
   targetDay = calendar.FRIDAY
   thisDay = today.weekday()
   de = (thisDay - targetDay) % 7
   res = today - timedelta(days=de)
   print res
def test():
  print dateToStr(datetime.today())
  print strToDate('2013-01-31 12:00:01')
  timeElement()
  timeAdd()
  lastFirday()
if __name__=='__main__':
  test()

结果

Connected to pydev debugger (build 141.1899)
2016-05-18 10:40:26
2013-01-31 12:00:01
year: 2016 month: 5 day: 18
hour: 10 minute: 41 second: 13
weekday: 3
2001-01-29 11:01:02
2001-01-29 11:01:02
2000-12-30 11:01:02
2016-05-13 10:41:37.001000

PS:本站还提供了几款关于Unix时间戳转换及日期在线工具,非常实用,提供给大家参考:

Unix时间戳(timestamp)转换工具:
http://tools.3water.com/code/unixtime

在线日期/天数计算器:
http://tools.3water.com/jisuanqi/date_jisuanqi

在线万年历日历:
http://tools.3water.com/bianmin/wannianli

在线阴历/阳历转换工具:
http://tools.3water.com/bianmin/yinli2yangli

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python字典get()方法用法分析
Apr 17 Python
Python实现的数据结构与算法之快速排序详解
Apr 22 Python
Python合并多个装饰器小技巧
Apr 28 Python
Python使用Pycrypto库进行RSA加密的方法详解
Jun 06 Python
详解python如何调用C/C++底层库与互相传值
Aug 10 Python
numpy排序与集合运算用法示例
Dec 15 Python
选择python进行数据分析的理由和优势
Jun 25 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
Jun 27 Python
Python Django 封装分页成通用的模块详解
Aug 21 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
Sep 02 Python
pyqt5中动画的使用详解
Apr 01 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
May 16 Python
Python表示矩阵的方法分析
May 26 #Python
Python实现中文数字转换为阿拉伯数字的方法示例
May 26 #Python
Python简单网络编程示例【客户端与服务端】
May 26 #Python
Python编程对列表中字典元素进行排序的方法详解
May 26 #Python
利用Python实现网络测试的脚本分享
May 26 #Python
python 如何快速找出两个电子表中数据的差异
May 26 #Python
详解Python3操作Mongodb简明易懂教程
May 25 #Python
You might like
PHP中对缓冲区的控制实现代码
2013/09/29 PHP
php验证session无效的解决方法
2014/11/04 PHP
ThinkPHP模版中导入CSS和JS文件的方法
2014/11/29 PHP
PHP简单生成缩略图相册的方法
2015/07/29 PHP
解决php表单重复提交实现方法
2015/09/29 PHP
PHP针对多用户实现更换头像功能
2016/09/04 PHP
PHP API接口必备之输出json格式数据示例代码
2017/06/27 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
php中钩子(hook)的原理与简单应用demo示例
2019/09/03 PHP
jquery api参考 visualjquery 中国线路 速度快
2007/11/30 Javascript
js计算两个时间之间天数差的实例代码
2013/11/19 Javascript
详解JS 比较两个Json对象的值是否相等的实例
2013/11/20 Javascript
js onmousewheel事件多次触发问题解决方法
2014/10/17 Javascript
详解JS正则replace的使用方法
2016/03/06 Javascript
深入理解JS中的substr和substring
2016/04/26 Javascript
捕获未处理的Promise错误方法
2017/10/13 Javascript
在vue中使用vue-echarts-v3的实例代码
2018/09/13 Javascript
详解Vue中的MVVM原理和实现方法
2020/07/15 Javascript
Python求两个list的差集、交集与并集的方法
2014/11/01 Python
python数据结构之链表详解
2017/09/12 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
2019/06/05 Python
python适合人工智能的理由和优势
2019/06/28 Python
python对象销毁实例(垃圾回收)
2020/01/16 Python
Pytorch 使用不同版本的cuda的方法步骤
2020/04/02 Python
简单了解Python字典copy与赋值的区别
2020/09/16 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
2020/12/31 Python
HTML5实践-图片设置成灰度图
2012/11/12 HTML / CSS
纽约和芝加哥当天送花:Ode à la Rose
2019/07/05 全球购物
奥地利婴儿用品和玩具购物网站:baby-markt.at
2020/01/26 全球购物
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
2015/11/18 面试题
怎样自定义一个异常类
2016/09/27 面试题
群众路线自我剖析材料
2014/10/08 职场文书
2015年维修工作总结
2015/04/25 职场文书
2016春季幼儿园大班开学寄语
2015/12/03 职场文书
导游词之井冈山
2019/11/20 职场文书