zoukankan      html  css  js  c++  java
  • 【13】python time时间模块知识点备查

    表示时间的三种形式

    # 时间模块

    '''
    UTC(世界协调时间):格林尼治天文时间,世界标准时间,在中国来说是UTC+8
    DST(夏令时):是一种节约能源而人为规定时间制度,在夏季调快1个小时



    时间的表示形式:
    1、时间戳
    以整型或浮点型表示时间的一个以秒为单位的时间间隔。这个时间间隔的基础值是从1970年1月1日领带开始算起
    2、元组
    一种Python的数据结构表示,这个元组有9个整型内容
    year
    month
    day
    hours
    minutes
    seconds
    weekday
    Julia day
    flag (1 或 -1 或0) 0表示正常时间 1 表示DST时间 -1需要判断

    3、格式化字符串
    %a 本地(locale)简化星期名称
    %A 本地完整星期名称
    %b 本地简化月份名称
    %B 本地完整月份名称
    %c 本地相应的日期和时间表示
    %d 一个月中的第几天(01 - 31)
    %H 一天中的第几个小时(24小时制,00 - 23)
    %I 第几个小时(12小时制,01 - 12)
    %j 一年中的第几天(001 - 366)
    %m 月份(01 - 12)
    %M 分钟数(00 - 59)
    %p 本地am或者pm的相应符
    %S 秒(01 - 61)
    %U 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周
    %w 一个星期中的第几天(0 - 6,0是星期天)
    %W 和%U基本相同,不同的是%W以星期一为一个星期的开始。
    %x 本地相应日期
    %X 本地相应时间
    %y 去掉世纪的年份(00 - 99)
    %Y 完整的年份
    %Z 时区的名字(如果不存在为空字符)
    %% ‘%’字符
     
      1 #__author:"吉*佳"
      2 #date: 2018/10/22 0022
      3 #function:
      4 
      5 import time
      6 
      7 # 时间模块
      8 
      9 '''
     10 UTC(世界协调时间):格林尼治天文时间,世界标准时间,在中国来说是UTC+8
     11 DST(夏令时):是一种节约能源而人为规定时间制度,在夏季调快1个小时
     12 
     13 
     14 
     15 时间的表示形式:
     16 1、时间戳
     17 以整型或浮点型表示时间的一个以秒为单位的时间间隔。这个时间间隔的基础值是从1970年1月1日领带开始算起
     18 2、元组
     19 一种Python的数据结构表示,这个元组有9个整型内容
     20 year
     21 month
     22 day
     23 hours
     24 minutes
     25 seconds
     26 weekday
     27 Julia day
     28 flag  (1 或 -1 或0) 0表示正常时间   1 表示DST时间  -1需要判断
     29 
     30 3、格式化字符串
     31 %a  本地(locale)简化星期名称
     32 %A  本地完整星期名称
     33 %b  本地简化月份名称
     34 %B  本地完整月份名称
     35 %c  本地相应的日期和时间表示
     36 %d  一个月中的第几天(01 - 31)
     37 %H  一天中的第几个小时(24小时制,00 - 23)
     38 %I  第几个小时(12小时制,01 - 12)
     39 %j  一年中的第几天(001 - 366)
     40 %m  月份(01 - 12)
     41 %M  分钟数(00 - 59)
     42 %p  本地am或者pm的相应符
     43 %S  秒(01 - 61)
     44 %U  一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周
     45 %w  一个星期中的第几天(0 - 6,0是星期天)
     46 %W  和%U基本相同,不同的是%W以星期一为一个星期的开始。
     47 %x  本地相应日期
     48 %X  本地相应时间
     49 %y  去掉世纪的年份(00 - 99)
     50 %Y  完整的年份
     51 %Z  时区的名字(如果不存在为空字符)
     52 %%  ‘%’字符
     53 
     54 2017-07-28 14:49:30
     55 '''
     56 
     57 # 1 返回当前时间的时间戳,浮点数形式,不需要参数
     58 c = time.time()
     59 print(c)
     60 '''
     61 输出:时间戳
     62 1540214592.0838583
     63 '''
     64 
     65 #将时间戳转为UTC时间元组(是世界标准时间,不是北京时间)
     66 t = time.gmtime(c)
     67 print(t)
     68 '''
     69 输出:世界标准时间
     70 time.struct_time(tm_year=2018, tm_mon=10, tm_mday=22, tm_hour=13, tm_min=23, tm_sec=12, tm_wday=0, tm_yday=295, tm_isdst=0)
     71 
     72 '''
     73 
     74 #将时间戳转为本地时间元组
     75 b = time.localtime(c)
     76 print(b)
     77 '''
     78 输出:
     79 time.struct_time(tm_year=2018, tm_mon=10, tm_mday=22, tm_hour=21, tm_min=23, tm_sec=12, tm_wday=0, tm_yday=295, tm_isdst=0)
     80 '''
     81 
     82 
     83 
     84 #将本地时间元组转成时间戳
     85 m = time.mktime(b)
     86 print(m)
     87 '''
     88 输出:
     89 1540216089.0
     90 '''
     91 
     92 
     93 #将时间元组转成字符串
     94 s = time.asctime(b)
     95 print(s)
     96 '''
     97 输出:
     98 Mon Oct 22 22:08:17 2018
     99 '''
    100 #将时间戳转为字符串   time.asctime(time.localtime(time.time()))
    101 p = time.ctime(c)
    102 print(p)
    103 '''
    104 输出:
    105 Mon Oct 22 22:08:17 2018
    106 '''
    107 
    108 #将时间元组转换成给定格式的字符串,参数2为时间元组,如果没有参数2,默认转当前时间
    109 q = time.strftime("%Y-%m-%d %H:%M:%S", b)
    110 print(q)
    111 print(type(q))
    112 '''
    113 输出:
    114 2018-10-22 22:08:17
    115 <class 'str'>
    116 '''
    117 
    118 #将时间字符串转为时间元组
    119 w = time.strptime(q, "%Y-%m-%d %X")
    120 print(w)
    121 '''
    122 输出:
    123 time.struct_time(tm_year=2018, tm_mon=10, tm_mday=22, tm_hour=22, tm_min=10, tm_sec=58, tm_wday=0, tm_yday=295, tm_isdst=-1)
    124 
    125 '''
    126 
    127 
    128 #延迟一个时间,整型或者浮点型
    129 #time.sleep(4)
    130 
    131 
    132 #返回当前程序的cup执行时间
    133 #Unix形同始终返回全部的运行时间
    134 #windows从第二次开始,都是以第一个调用此函数的开始间戳作为基数
    135 y1 = time.clock()
    136 print("%d" % y1)
    137 time.sleep(2)
    138 y2 = time.clock()
    139 print("%d" % y2)
    140 time.sleep(2)
    141 y3 = time.clock()
    142 print("%d" % y3)
    143 
    144 '''
    145 输出:
    146 0
    147 2
    148 4
    149 
    150 '''

    总结:

    关于三种形式表示时间上的转换图

     评测一个程序花费的时间长度(windows为例):

    # 比如检测一个程序运行所花的时间大小
    
    time.clock()
    sum  = 0
    for i in range(100000000):
        sum += i
    print(time.clock())
    
    '''
    输出:
    23.743988065019252
    '''

    # datetime 比time 好了很多,提供了更多的接口,更加直观和容易调用
    
    import datetime
    
    # 主要的方法
    模块中的类
    datetime         同时有时间和日期
    timedelta        用于计算时间的跨度
    tzinfo           时区相关
    time             时间
    date             日期
    
    #__author:"吉*佳"
    #date: 2018/10/22 0022
    #function:
    
    # datetime 比time 好了很多,提供了更多的接口,更加直观和容易调用
    
    import datetime
    
    # 主要的方法
    '''
    模块中的类
    datetime         同时有时间和日期
    timedelta        用于计算时间的跨度
    tzinfo           时区相关
    time             时间
    date             日期
    
    '''
    
    # 使用:
    
    # 1 获取当前时间
    nowtime=datetime.datetime.now()
    print(nowtime)
    print(type(nowtime))
    '''
    输出:
    2018-10-22 22:58:31.973017
    <class 'datetime.datetime'>
    '''
    
    # 2 获取指定时间
    d2 = datetime.datetime(1994,1,10,10,28,25,111)
    print(d2)
    
    '''
    输出:
    1994-01-10 10:28:25.000111
    '''
    
    # 3 将以上时间(nowtime)转化为 字符串
    d3 = nowtime.strftime('%y-%m-%d %H:%M:%S')
    print(d3)
    print(type(d3))
    
    d31 = nowtime.strftime('%Y-%m-%d %H:%M:%S')   #大Y表示四位的年
    print(d31)
    
    '''
    输出:
    18-10-22 23:04:35
    <class 'str'>
    2018-10-22 23:05:48
    '''
    
    # 4 将字符串 转化为 datetime类型的
    d4 = datetime.datetime.strptime(d3,'%y-%m-%d %H:%M:%S')
    print("d4=",d4)
    '''
    输出:
    d4= 2018-10-22 23:12:14
    '''
    
    # 5 datetime型是可以做加减运算的
    d5 = datetime.datetime(1994,1,10,13,25,48,111)
    d6 = datetime.datetime.now()
    d= d6-d5
    print(d)         #打印出间隔的天数和秒数
    print(d.days)    #打印出间隔的天数
    print(d.seconds) #打印出出去整数天外的间隔的秒数
    
    print(type(d))     #所属的类型是
    '''
    输出:
    9051 days, 9:50:06.403529
    9051
    35406
    <class 'datetime.timedelta'>
    '''

     

    #__author:"吉*佳"
    #date: 2018/10/22 0022
    #function:
    
    import calendar
    # 日历模块
    
    # 1 返回指定年内某月的日历信息
    print(calendar.month(2018,10))
    
    '''
    输出:
        October 2018
    Mo Tu We Th Fr Sa Su
     1  2  3  4  5  6  7
     8  9 10 11 12 13 14
    15 16 17 18 19 20 21
    22 23 24 25 26 27 28
    29 30 31
    '''
    
    # 返回指定某一年的日历
    print(calendar.calendar(2018))
    '''
    输出:
                                      2018
    
          January                   February                   March
    Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
     1  2  3  4  5  6  7                1  2  3  4                1  2  3  4
     8  9 10 11 12 13 14       5  6  7  8  9 10 11       5  6  7  8  9 10 11
    15 16 17 18 19 20 21      12 13 14 15 16 17 18      12 13 14 15 16 17 18
    22 23 24 25 26 27 28      19 20 21 22 23 24 25      19 20 21 22 23 24 25
    29 30 31                  26 27 28                  26 27 28 29 30 31
    
           April                      May                       June
    Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                       1          1  2  3  4  5  6                   1  2  3
     2  3  4  5  6  7  8       7  8  9 10 11 12 13       4  5  6  7  8  9 10
     9 10 11 12 13 14 15      14 15 16 17 18 19 20      11 12 13 14 15 16 17
    16 17 18 19 20 21 22      21 22 23 24 25 26 27      18 19 20 21 22 23 24
    23 24 25 26 27 28 29      28 29 30 31               25 26 27 28 29 30
    30
    
            July                     August                  September
    Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                       1             1  2  3  4  5                      1  2
     2  3  4  5  6  7  8       6  7  8  9 10 11 12       3  4  5  6  7  8  9
     9 10 11 12 13 14 15      13 14 15 16 17 18 19      10 11 12 13 14 15 16
    16 17 18 19 20 21 22      20 21 22 23 24 25 26      17 18 19 20 21 22 23
    23 24 25 26 27 28 29      27 28 29 30 31            24 25 26 27 28 29 30
    30 31
    
          October                   November                  December
    Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
     1  2  3  4  5  6  7                1  2  3  4                      1  2
     8  9 10 11 12 13 14       5  6  7  8  9 10 11       3  4  5  6  7  8  9
    15 16 17 18 19 20 21      12 13 14 15 16 17 18      10 11 12 13 14 15 16
    22 23 24 25 26 27 28      19 20 21 22 23 24 25      17 18 19 20 21 22 23
    29 30 31                  26 27 28 29 30            24 25 26 27 28 29 30
                                                        31
    
    '''
    
    # 返回 判断瑞年与否
    print(calendar.isleap(2018))
    '''
    输出:
    False
    '''
    
    # 返回这个月的weekday的第一天和月的天数
    print(calendar.monthrange(2018,2))
    
    '''
    输出:
    (3, 28)
    其中3 代表第一天是从周四开始的,28 代表天数
    '''
    
    # 返回某个月以每一周为元素的列表
    print(calendar.monthcalendar(2018,6))
    '''
    输出:
    [[0, 0, 0, 0, 1, 2, 3], [4, 5, 6, 7, 8, 9, 10], [11, 12, 13, 14, 15, 16, 17], [18, 19, 20, 21, 22, 23, 24], [25, 26, 27, 28, 29, 30, 0]]
    
    '''

  • 相关阅读:
    css和js实现硬件加速渲染自定义滚动条
    入驻博客园
    原生JS实现动态折线图
    纯JS自定义网页滚动条
    Unity实现代码控制音频播放
    MVC实现修改数据
    JS实现将二维数组生成到页面上
    JS实现页面计时
    多中方式,实现斐波那契数列
    算法题
  • 原文地址:https://www.cnblogs.com/jiyongjia/p/9833562.html
Copyright © 2011-2022 走看看