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之传说中的函数编写条规
Oct 11 Python
Python实现list反转实例汇总
Nov 11 Python
将Python中的数据存储到系统本地的简单方法
Apr 11 Python
安装Python的web.py框架并从hello world开始编程
Apr 25 Python
Python中getpass模块无回显输入源码解析
Jan 11 Python
Python实现计算圆周率π的值到任意位的方法示例
May 08 Python
利用pandas进行大文件计数处理的方法
Jul 25 Python
Linux下Python安装完成后使用pip命令的详细教程
Nov 22 Python
Python多进程方式抓取基金网站内容的方法分析
Jun 03 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
Jun 03 Python
Opencv常见图像格式Data Type及代码实例
Nov 02 Python
用python获取txt文件中关键字的数量
Dec 24 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
日本十大科幻动漫 宇宙骑士垫底,第一已成经典
2020/03/04 日漫
使用 php4 加速 web 传输
2006/10/09 PHP
PHP7正式版测试,性能惊艳!
2015/12/08 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
2016/05/12 PHP
javascript parseInt与Number函数的区别
2010/01/21 Javascript
jquery 最简单易用的表单验证插件
2010/02/27 Javascript
Javascript下判断是否为闰年的Datetime包
2010/10/26 Javascript
document.write()及其输出内容的样式、位置控制
2013/08/12 Javascript
JS组件Bootstrap Table表格行拖拽效果实现代码
2020/08/27 Javascript
全面了解js中的script标签
2016/07/04 Javascript
vue+vuex+axios实现登录、注册页权限拦截
2018/03/09 Javascript
jquery实现二级导航下拉菜单效果实例
2019/05/14 jQuery
layer.alert自定义关闭回调事件的方法
2019/09/27 Javascript
Angular之jwt令牌身份验证的实现
2020/02/14 Javascript
jquery简易手风琴插件的封装
2020/10/13 jQuery
antd Form组件方法getFieldsValue获取自定义组件的值操作
2020/10/29 Javascript
[01:15:29]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第三局
2016/03/04 DOTA
Python自动化部署工具Fabric的简单上手指南
2016/04/19 Python
用TensorFlow实现戴明回归算法的示例
2018/05/02 Python
python实现滑雪游戏
2020/02/22 Python
详解Python中namedtuple的使用
2020/04/27 Python
Pytorch 使用opnecv读入图像由HWC转为BCHW格式方式
2020/06/02 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
2020/07/28 Python
基于python爬取链家二手房信息代码示例
2020/10/21 Python
html5+css3之制作header实例与更新
2020/12/21 HTML / CSS
伊利莎白雅顿官网:Elizabeth Arden
2016/10/10 全球购物
不开辟用于交换数据的临时空间,如何完成字符串的逆序
2012/12/02 面试题
行政办公员自我评价分享
2013/12/14 职场文书
护理专业大学生自我推荐信
2014/01/25 职场文书
摄影助理岗位职责
2014/02/07 职场文书
2016年安全月活动总结
2016/04/06 职场文书
导游词之天津古文化街
2019/11/09 职场文书
《弟子规》读后感:知廉耻、明是非、懂荣辱、辨善恶
2019/12/03 职场文书
Nginx Rewrite使用场景及配置方法解析
2021/04/01 Servers
Mysql 设置boolean类型的操作
2021/06/04 MySQL
vue使用watch监听属性变化
2022/04/30 Vue.js