zoukankan      html  css  js  c++  java
  • python 计时——time, datetime

     

    时间戳

    时间戳是自 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
  • 相关阅读:
    Android项目打包
    Video Demystified
    C指针与python bytes 互转
    运筹学笔记 3 线性代数基础
    三角网格上的寻路算法Part.2—A*算法
    三角网格上的寻路算法Part.1—Dijkstra算法
    从二维点集重建平面形状-浅议凹包算法
    二值图像膨胀腐蚀算法的几种实现方式
    浅议像素化与体素化Part.1——平面图形像素化
    寻找图像中的局部极大点
  • 原文地址:https://www.cnblogs.com/kaituorensheng/p/2757865.html
Copyright © 2011-2022 走看看