• #15 time&datetime&calendar模块


    前言

    从这一节开始,记录一些常用的内置模块,模块的学习可能比较无聊,但基础就在这无聊的模块中,话不多说,本节记录和时间相关的模块!

    一、time模块

    Python中设计时间的模块有很多,但是最常用的就是time模块了,先来看看time模块的所有方法:

    In [3]: dir(time)
    Out[3]:
    ['CLOCK_MONOTONIC', 'CLOCK_MONOTONIC_RAW', 'CLOCK_PROCESS_CPUTIME_ID', 'CLOCK_REALTIME', 'CLOCK_THREAD_CPUTIME_ID', '_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'clock', 'clock_getres', 'clock_gettime', 'clock_settime', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'perf_counter', 'process_time', 'sleep', 'strftime', 'strptime', 'struct_time', 'time', 'timezone', 'tzname','tzset']

    方法还不少呢,一点一点来剖析它

    1.获取时间

    In [19]: time.time()                      #获取当前时间的时间戳
    Out[19]: 1549343780.962011
    
    In [20]: time.localtime()                 # 获取当地时间,返回当地时间下的时间元组,可是设置是否为夏令时,tm_isdst为夏令时
    Out[20]: time.struct_time(tm_year=2019, tm_mon=2, tm_mday=5, tm_hour=13, tm_min=16, tm_sec=27, tm_wday=1, tm_yday=36, tm_isdst=0)
    
    In [21]: time.localtime(time.time())      # 参数接受为时间戳
    Out[21]: time.struct_time(tm_year=2019, tm_mon=2, tm_mday=5, tm_hour=13, tm_min=16, tm_sec=39, tm_wday=1, tm_yday=36, tm_isdst=0)
    
    In [22]: time.asctime()                   # 获取格式化时间
    Out[22]: 'Tue Feb  5 13:17:23 2019'
    
    In [23]: time.asctime(time.localtime())   # 参数为struct_time格式
    Out[23]: 'Tue Feb  5 13:17:40 2019'
    
    In [24]: time.ctime()                     # 获取格式化时间,同上
    Out[24]: 'Tue Feb  5 13:18:11 2019'
    
    In [25]: time.gmtime()                    # 同localtime,但返回格林威治天文时间下的时间元组
    Out[25]: time.struct_time(tm_year=2019, tm_mon=2, tm_mday=5, tm_hour=5, tm_min=18, tm_sec=18, tm_wday=1, tm_yday=36, tm_isdst=0)

    2.格式化日期

    In [28]: time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())    # 格式化成 年-月-日 时:分:秒 形式
    Out[28]: '2019-02-05 13:26:27'
    
    In [29]: time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()) # 格式化成周 月 日 时:分:秒 年 形式
    Out[29]: 'Tue Feb 05 13:26:47 2019'
    In [33]: time.gmtime(time.time())        # 将时间戳转换为struct_time格式
    Out[33]: time.struct_time(tm_year=2019, tm_mon=2, tm_mday=5, tm_hour=5, tm_min=40, tm_sec=15, tm_wday=1, tm_yday=36, tm_isdst=0)
    
    In [34]: time.mktime(time.localtime())   # 将struct_time格式转换为时间戳 
    Out[34]: 1549345233.0
    In [35]: time.strptime("2019/02/05","%Y/%m/%d")   # 将格式化日期转换为struct_time格式
    Out[35]: time.struct_time(tm_year=2019, tm_mon=2, tm_mday=5, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=36, tm_isdst=-1)

    补充:time模块日期格式化符号

    %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      # 当前时区的名称
    %%      # %号本身

    3.睡眠

    In [36]: time.sleep(3)   # 使用time.sleep(秒数)来达到睡眠

    4.其他方法

    In [37]: time.altzone      # 返回格林威治西部的夏令时地区的偏移秒数。如果该地区在格林威治东部会返回负值(如西欧,包括英国)。对夏令时启用地区才能使用
    Out[37]: -28800
    
    In [38]: time.clock()      # 以浮点数计算的秒数返回当前的CPU时间,用来衡量不同程序的耗时
    Out[38]: 10.241939
     
    In [39]: time.timezone     # 当地时区(未启动夏令时)距离格林威治的偏移秒数(>0,美洲;<=0大部分欧洲,亚洲,非洲)
    Out[39]: -28800
    
    In [40]: time.tzname       # 包含一对根据情况的不同而不同的字符串,分别是带夏令时的本地时区名称,和不带的
    Out[40]: ('CST', 'CST')

    二、datetime模块

    datetime模块相比于time模块并不常用,但还是要了解它

    In [42]: datetime.datetime.now()   # 获取当前时间,直接返回格式化后的时间格式,比较人性化
    Out[42]: datetime.datetime(2019, 2, 5, 13, 56, 28, 929415)
    
    In [43]: datetime.datetime.now() + datetime.timedelta(5)         # 当前时间加5天,默认单位是天
    Out[43]: datetime.datetime(2019, 2, 10, 14, 1, 14, 324972)
    
    In [44]: datetime.datetime.now() + datetime.timedelta(-5)        # 当前时间减5天
    Out[44]: datetime.datetime(2019, 1, 31, 14, 1, 21, 15534)
    
    In [45]: datetime.datetime.now() + datetime.timedelta(hours=5)   # 当前时间加5小时
    Out[45]: datetime.datetime(2019, 2, 5, 19, 1, 33, 334723)
    
    In [46]: datetime.datetime.now() + datetime.timedelta(minutes=5) # 当前时间加5分钟
    Out[46]: datetime.datetime(2019, 2, 5, 14, 6, 46, 123465)

    可以看到datetime模块常用来作日期的加减计算,这方面很有优势

    三、calendar模块

    In [9]: import calendar
    
    In [11]: print(calendar.calendar(2019))   # calendar.calendar(year,w=2,l=1,c=6),返回一个多行字符串格式的year年年历,3个月一行,间隔距离为c=6,每日宽度间隔为w=2字符,每行长度为21* W+18+2* C,l=1是每星期行数。
                                      2019
    
          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                   1  2  3                   1  2  3
     7  8  9 10 11 12 13       4  5  6  7  8  9 10       4  5  6  7  8  9 10
    14 15 16 17 18 19 20      11 12 13 14 15 16 17      11 12 13 14 15 16 17
    21 22 23 24 25 26 27      18 19 20 21 22 23 24      18 19 20 21 22 23 24
    28 29 30 31               25 26 27 28               25 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  2  3  4  5  6  7             1  2  3  4  5                      1  2
     8  9 10 11 12 13 14       6  7  8  9 10 11 12       3  4  5  6  7  8  9
    15 16 17 18 19 20 21      13 14 15 16 17 18 19      10 11 12 13 14 15 16
    22 23 24 25 26 27 28      20 21 22 23 24 25 26      17 18 19 20 21 22 23
    29 30                     27 28 29 30 31            24 25 26 27 28 29 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  2  3  4  5  6  7                1  2  3  4                         1
     8  9 10 11 12 13 14       5  6  7  8  9 10 11       2  3  4  5  6  7  8
    15 16 17 18 19 20 21      12 13 14 15 16 17 18       9 10 11 12 13 14 15
    22 23 24 25 26 27 28      19 20 21 22 23 24 25      16 17 18 19 20 21 22
    29 30 31                  26 27 28 29 30 31         23 24 25 26 27 28 29
                                                        30
    
          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                   1  2  3                         1
     7  8  9 10 11 12 13       4  5  6  7  8  9 10       2  3  4  5  6  7  8
    14 15 16 17 18 19 20      11 12 13 14 15 16 17       9 10 11 12 13 14 15
    21 22 23 24 25 26 27      18 19 20 21 22 23 24      16 17 18 19 20 21 22
    28 29 30 31               25 26 27 28 29 30         23 24 25 26 27 28 29
                                                        30 31
    In [12]: calendar.firstweekday()   # 返回每周的第一天,0代表周一
    Out[12]: 0
    
    In [13]: calendar.isleap(2004)   # 测试是否为闰月年
    Out[13]: True
    
    In [14]: calendar.isleap(2019)
    Out[14]: False
    
    In [15]: print(calendar.month(2019,1))   # calendar.month(year,month,w=2,l=1),返回一个多行字符串格式的year年month月日历,两行标题,一周一行,每日宽度间隔为w=2字符每行的长度为7* w+6,l=1是每星期的行数。
        January 2019
    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

    calendar掌握这么多就差不多了,如果需要查看其他方法,查看其帮助信息即可。

  • 相关阅读:
    iOS--推送
    iOS 多线程之GCD
    iOS多线程之NSThread
    NSUserDefaults的简单使用
    stat命令的实现-mystat
    linux pwd指令的C实现
    2019-2020-1 20175307 20175308 20175319 实验五 通讯协议设计
    2019-2020-1 20175307 20175308 20175319 实验四 外设驱动程序设计
    2019-2020-1 20175307 20175308 20175319 实验三 并发程序
    2019-2020-1 20175307 20175308 20175319 实验二 固件程序设计
  • 原文地址:https://www.cnblogs.com/minutesheep/p/10352737.html
Copyright © 2020-2023  润新知