Python计时相关操作详解【time,datetime】
本篇章节讲解Python计时相关操作。分享给大家供大家参考,具体如下: 内容目录: 1. 时间戳 一、时间戳 时间戳是自 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,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) 五、例子 #! 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)转换工具: 在线日期/天数计算器: 在线万年历日历: 在线阴历/阳历转换工具: 更多关于Python相关内容感兴趣的读者可查看本站专题:《Python日期与时间操作技巧总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》 希望本文所述对大家Python程序设计有所帮助。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |