Python计时相关操作详解【time,datetime】
本文实例讲述了Python计时相关操作。分享给大家供大家参考,具体如下:
内容目录:
1.时间戳
2.当前时间
3.时间差
4.python中时间日期格式化符号
5.例子
一、时间戳
时间戳是自1970年1月1日(08:00:00GMT)至当前时间的总秒数。它也被称为Unix时间戳(UnixTimestamp),它在unix、c的世界里随处可见;常见形态是浮点数,小数点后面是毫秒。两个时间戳相减就是时间间隔(单位:秒)。
例:
importtime time1=time.time() time.sleep(15) time2=time.time() printtime2-time1
其中,time.sleep()是休眠函数,单位:秒。
二、当前时间
>>>importdatetime,time >>>now=time.strftime("%Y-%m-%d%H:%M:%S") >>>printnow 2016-04-3017:02:26 >>>now=datetime.datetime.now() >>>printnow
三、时间差
#1昨天00:00到昨天23:59
>>>importdatetime >>>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 t12016-04-29-00-00-00 >>>print't2',t2 t22016-04-29-23-59-59
#2现在往后10小时
>>>d1=datetime.datetime.now() >>>d3=d1+datetime.timedelta(hours=10) >>>d3.ctime() 'SunMay103:09:582
#3这么一会的秒数、微妙数(注意是取秒、微妙部分,并不是等价转换)
>>>importdatetime >>>starttime=datetime.datetime.now() >>>endtime=datetime.datetime.now() >>>starttime=datetime.datetime.now() >>>endtime=datetime.datetime.now() >>>printendtime-starttime 0:00:07.390988 >>>print(endtime-starttime).seconds 7 >>>print(endtime-starttime).microseconds 390988
文件的时间戳
>>>importos >>>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时间戳,可以转换成易于理解的格式:
>>>importtime >>>time.localtime(statinfo.st_ctime) (2008,2,1,19,30,13,4,32,0)
注:2008年2月1日的19时30分13秒(2008-2-119:30:13)
四、python中时间日期格式化符号
%y两位数的年份表示(00-99)
%Y四位数的年份表示(000-9999)
%m月份(01-12)
%d月内中的一天(0-31)
%H24小时制小时数(0-23)
%I12小时制小时数(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 '''''日期相关的操作''' fromdatetimeimportdatetime fromdatetimeimporttimedelta importcalendar DATE_FMT='%Y-%m-%d' DATETIME_FMT='%Y-%m-%d%H:%M:%S' DATE_US_FMT='%d/%m/%Y' ''''' 格式化常用的几个参数 Y:1999 y:99 m:mouth0212 M:minute00-59 S:second d:day H:hour ''' defdateToStr(date): '''''把datetime类型的时间格式化自己想要的格式''' returndatetime.strftime(date,DATETIME_FMT) defstrToDate(strdate): '''''把str变成日期用来做一些操作''' returndatetime.strptime(strdate,DATETIME_FMT) deftimeElement(): '''''获取一个时间对象的各个元素''' now=datetime.today() print'year:%smonth:%sday:%s'%(now.year,now.month,now.day) print'hour:%sminute:%ssecond:%s'%(now.hour,now.minute,now.second) print'weekday:%s'%(now.weekday()+1)#一周是从0开始的 deftimeAdd(): ''''' 时间的加减,前一天后一天等操作 datetime.timedelta([days[,seconds[,microseconds[,milliseconds[,minutes[,hours[,weeks]]]]]]]) 参数可以是正数也可以是负数 得到的对象可以加也可以减乘以数字和求绝对值 ''' atime=timedelta(days=-1) now=datetime.strptime('2001-01-3011:01:02',DATETIME_FMT) printnow+atime printnow-abs(atime) printnow-abs(atime)*31 deflastFirday(): today=datetime.today() targetDay=calendar.FRIDAY thisDay=today.weekday() de=(thisDay-targetDay)%7 res=today-timedelta(days=de) printres deftest(): printdateToStr(datetime.today()) printstrToDate('2013-01-3112:00:01') timeElement() timeAdd() lastFirday() if__name__=='__main__': test()
结果
Connectedtopydevdebugger(build141.1899) 2016-05-1810:40:26 2013-01-3112:00:01 year:2016month:5day:18 hour:10minute:41second:13 weekday:3 2001-01-2911:01:02 2001-01-2911:01:02 2000-12-3011:01:02 2016-05-1310:41:37.001000
PS:本站还提供了几款关于Unix时间戳转换及日期在线工具,非常实用,提供给大家参考:
Unix时间戳(timestamp)转换工具:
http://tools.jb51.net/code/unixtime
在线日期/天数计算器:
http://tools.jb51.net/jisuanqi/date_jisuanqi
在线万年历日历:
http://tools.jb51.net/bianmin/wannianli
在线阴历/阳历转换工具:
http://tools.jb51.net/bianmin/yinli2yangli
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python日期与时间操作技巧总结》、《Python数据结构与算法教程》、《PythonSocket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。