• Python笔记_第二篇_面向过程_第二部分_4.常用模块的简单使用_time模块、datetime模块和calendar模块


    1. time模块

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

      时间的表示形式:
      1.时间戳
      以整型或浮点型表示时间的一个以秒为单位的时间间隔。这个时间间隔的基础值是从1970年1月1号01秒开始算起。
      2.元组
      一种Python的数据结构表示,这个元组有9个整型内容:
      year
      month
      day
      hours
      minutes
      seconds
      weekday
      julia day
      flag(1或-1或0):0表示正常格式,1表示夏令时,-1根据当前日期自己判断。
      3.格式化字符串
      %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)
      %f 毫秒(000000-999999)
      %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 当前时区的名称
      %% %号本身

      

      举例1:返回当前时间的时间戳,浮点数形式:

    # 返回当前时间的时间戳,浮点数形式
    c = time.time()
    print(c)
    # 返回值:1557662207.2357445

      举例2:将时间戳转为UTC时间元组(格林尼治时间)

    # 将时间戳转为UTC时间元组(格林尼治时间)
    t = time.gmtime() # 全称:Greenwich Mean time
    print(t)
    # 返回值:
    # time.struct_time(tm_year=2019, tm_mon=5, tm_mday=12,
    #                  tm_hour=11, tm_min=57, tm_sec=12, tm_wday=6, tm_yday=132, tm_isdst=0)

      举例3:将时间戳转为本地时间元组

    # 将时间戳转为本地时间元组
    beijingTime = time.localtime()
    print(beijingTime)
    # 返回值:
    # time.struct_time(tm_year=2019, tm_mon=5, tm_mday=12,
    #                  tm_hour=19, tm_min=57, tm_sec=45, tm_wday=6, tm_yday=132, tm_isdst=0)

      举例4:将本地时间元素转换为时间戳

    # 将本地时间元组转换为时间戳
    beijingTime = time.localtime()
    m  = time.mktime(beijingTime)
    print(m)
    # 返回值:1557662408.0

      举例5:将本地时间转换为字符串

    # 将时间元组转换成字符串
    beijingTime = time.localtime()
    s  = time.asctime(beijingTime)
    print(s)
    # 返回值:
    # Sun May 12 20:00:58 2019

      举例6:

    # 将时间戳转为字符串
    c = time.time()
    p = time.ctime(c)
    print(p)
    # 返回值:
    # Sun May 12 20:01:40 2019

      举例7:将时间元组转成给定格式的字符串,本地时间不写就是当前时间,也可以写成其他时间。  

    # 将时间元组转换成给定格式的字符串,本地时间不写就是当前时间,也可以写成其他时间,
    # 参数二为时间元组
    beijingTime = time.localtime()
    q = time.strftime("%Y-%m-%d %H:%M:%S",beijingTime)
    print(beijingTime)
    print(q)
    print(type(q)) #转换成字符串类型
    # 返回值
    # time.struct_time(tm_year=2019, tm_mon=5, tm_mday=12, tm_hour=20, 
    #                  tm_min=3, tm_sec=1, tm_wday=6, tm_yday=132, tm_isdst=0)
    # 2019-05-12 20:03:01
    # <class 'str'>

      举例8:将时间字符串转换成元组:

    # 将时间字符串转换成时间元组
    beijingTime = time.localtime()
    q = time.strftime("%Y-%m-%d %H:%M:%S",beijingTime)
    w = time.strptime(q,"%Y-%m-%d %H:%M:%S")
    print(w)

      其实上面说的挺乱,就是字符串、元组、时间戳来回转换,我们用一张图表来详细的说明这些函数方法的关系

      

      举例9:时钟、沉睡类型方法,不过Python3.8对于sleep这个函数要被弃用,改成time.perf_counter这个方法

    # 延迟一个时间,整型或浮点型
    time.sleep(4)
    
    
    # 返回当程序的CPU执行时间
    # UNIX始终返回全部的运行时间
    # WINDOW从第二次开始,都是以第一次调用此函数的开始时间戳作为基数
    # python 3.8 这个函数将要被弃用
    # 换成time.perf_counter()这个函数
    # 这个可以做电脑的性能测试,表示CPU处理速度快慢
    y1 = time.clock()
    print(y1)
    time.sleep(2)
    y2 = time.clock()
    print(y2)
    time.sleep(2)
    y3 = time.clock()
    print("%d",y3)
    y1 = time.perf_counter()
    print("%d" %y1)
    time.sleep(2)
    y2 = time.perf_counter()
    print("%d" %y2)
    time.sleep(2)
    y3 = time.perf_counter()
    print("%d" %y3)
    
    # 举例说明:
    time.perf_counter()  # 表示下面范围运行需要多长时间
    sum = 0
    for i in range(10000):
        sum += i
    print(time.perf_counter())
    
    time.perf_counter()  # 表示下面范围运行需要多长时间
    sum = 0
    for i in range(100):
        sum *= i
    
    print(time.perf_counter())

    2. datetime模块

      datetime比time高级不少,可以理解为datetime基于time进行了封装,提供了各种使用函数。datetime模块的接口更直观,更容易调用。

      模块中的类包括五种:

      datetime类:同时有时间和日期

      timedelta类:主要用于计算时间的跨度

      tzinfo类:时区

      time类:直关注时间

      date类:直关注日期

      举例10:获取当前时间:

    import datetime

    # 获取当期时间 d1
    = datetime.datetime.now() print(d1) print(type(d1)) # 返回值: # 2019-05-12 20:11:51.832677 # <class 'datetime.datetime'>

      举例11:获取指定时间:

    # 获取指定时间
    d2 = datetime.datetime(1999,10,1,10,28,25,123456)
    print(d2)
    # 返回值:
    # 1999-10-01 10:28:25.123456

      举例12:将事件类型转换陈个字符串类型

    # 将时间数据类型转换成字符串
    d1 = datetime.datetime.now()
    d3 = d1.strftime("%Y-%m-%d %X")
    print(type(d3))
    print(d3)
    # 返回值:
    # <class 'str'>
    # 2019-05-12 20:13:19

      举例13:将格式化字符串转换为datetime对象

    # 将时间数据类型转换成字符串
    d1 = datetime.datetime.now()
    d3 = d1.strftime("%Y-%m-%d %X")
    print(type(d3))
    print(d3)
    # 返回值:
    # <class 'str'>
    # 2019-05-12 20:13:19
    
    # 将格式化字符串转为datetime对象
    d4 = datetime.datetime.strptime(d3,"%Y-%m-%d %X")
    print(type(d4))
    print(d4)

      举例14:时间的减法运算

    d5 = datetime.datetime(1999,10,1,10,28,25,123456)
    d6 = datetime.datetime.now()
    d7 = d6 - d5
    print(type(d7))
    print(d7)
    print(d7.days) # 提取到间隔的天数
    print(d7.seconds) # 提取间隔的秒数
    print(d5.minute) # 提取间隔的分钟数
    # 返回值:
    # 7163 days, 9:46:45.024078
    # 7163
    # 35205
    # 28

    3. calendar模块

      举例15:

    import calendar
    
    # 返回指定某年某月的日历
    print(calendar.month(2017,7))
    # 返回指定年的日历
    print(calendar.calendar(2019))
    
    # 判断是不是闰年True/False
    print(calendar.isleap(2019))
    
    # 返回某个月的weekday的第一天和这个月所有的天数
    print(calendar.monthrange(2017,7))
    # (5, 31) 5 表示举例第一天的开始多少天
    
    # 返回某个月以每一周为元素的列表
    print(calendar.monthcalendar(2017,7))
    print(type(calendar.monthcalendar(2017,7))) # 返回列表形式
  • 相关阅读:
    【Qt】无边框窗体中带有ActiveX组件时的一个BUG
    Qt:正确判断文件、文件夹是否存在的方法
    自定义Data Service Providers
    Facebook的ATOM Editor的底层Electron
    ASP.NET Web API中使用OData
    Oracle 使用
    ODP.NET 之访问 Oracle 数据库
    Oracle安装及使用入门
    架构设计
    CQRS模式实现
  • 原文地址:https://www.cnblogs.com/noah0532/p/10853494.html
Copyright © 2020-2023  润新知