zoukankan      html  css  js  c++  java
  • Python基础—10-常用模块:time,calendar,datetime

    #常用模块

    time

    • sleep:休眠指定的秒数(可以是小数)

    • time:获取时间戳(从1970-01-01 00:00:00到此刻的秒数)

    • localtime:将一个时间戳转换为一个对象,对象中包含了所有日期时间信息

      # 将时间戳转换为一个对象(包含年月日等信息)
      # 当不传参数,默认转换当前时间戳
      local_time = time.localtime()
      print(local_time)
      # 通过下表获取
      print(local_time[0])
      # 通过属性名获取
      print(local_time.tm_year)
    • mktime:将日期时间信息转换为时间戳

      # 将日期时间信息转换为时间戳
      # new_time = time.mktime(local_time)
      new_time = time.mktime((2018, 6, 20, 10, 32, 10, 2, 171, 0))
      print(new_time)
    • strftime:将原则对象格式化显示

      # 格式化显示,可以传递一个类似于元组的对象
      print(time.strftime('%Y-%m-%d %H:%M:%S %w %W', local_time))
      # 不传时间对象,默认转换当前时间
      print(time.strftime('%D'))
      '''
      %Y:年(4位)
      %y:年(2位)
      %m:月
      %d:日
      %D:月/日/年
      %H:时(24)
      %I:时(12)
      %M:分
      %S:秒
      %w:星期(1~7)
      %W:本周是今年的第几周
      '''
    • gmtime:将时间戳转换为localtime对象

      # 将时间戳转换为localtime对象
      print(time.gmtime(time.time()))
      # 不传参数默认转换当前时间戳
      print(time.gmtime())
    • asctime:将localtime以特定的格式显示

      # 将localtime格式化显示
      print(time.asctime(local_time))
      # 不传参数默认转换当前时间
      print(time.asctime())
    • timezone:时区

      # 返回0时区与当前时区相差的秒数
      print(time.timezone)

    calendar

    • 使用

      import calendar
      
      # 返回某一年的日历
      c = calendar.calendar(2018, w=3, l=2, c=10, m=2)
      # print(c)
      
      # 返回某一年某一月的日历
      m = calendar.month(2018, 6, w=3, l=2)
      # print(m)
      
      # 判断一个年份是否是闰年
      print(calendar.isleap(2008))
      
      # 返回两个年份之间的闰年数 [起始年,结束年)
      print(calendar.leapdays(2000, 2008))    # 返回2
      print(calendar.leapdays(2000, 2009))    # 返回3

    datetime

    • date

      from datetime import date
      import time
      
      # 创建对象
      d1 = date(2018, 6, 20)
      print(d1)
      
      d2 = date.today()
      print(d2)
      
      d3 = date.fromtimestamp(time.time())
      print(d3)
      
      # 转换为标准格式字符串
      s = d1.isoformat()
      print(s)
      # print(type(s))
      
      # 日历显示:(年,第几周,星期)
      print(d1.isocalendar())
      
      # 获取星期(1~7)
      print(d1.isoweekday())
      # 获取星期(0~6)
      print(d1.weekday())
      
      # 格式化
      print(d1.strftime('%Y/%m/%d'))
      
      # 转换为类似于元组的形式(localtime)
      print(d1.timetuple())
    • time

      from datetime import time
      
      # 创建对象
      t = time(1, 2, 3)
      print(t)
      
      # 单独获取
      print('', t.hour)
      print('', t.minute)
      print('', t.second)
      
      # 格式化显示
      print(t.strftime('%H::%M::%S'))
    • datetime

      from datetime import datetime
      import time
      
      # 创建对象
      dt = datetime(2018, 6, 20, 14, 29, 30)
      print(dt)
      # 当前时间,当地带时区的时间
      dt2 = datetime.now()
      print(dt2)
      # 不带时区的时间
      dt3 = datetime.utcnow()
      print(dt3)
      # 将时间戳转换为日期时间
      dt4 = datetime.fromtimestamp(time.time())
      print(dt4)
      
      # 提取日期
      d = dt.date()
      print(d)
      # print(type(d))
      # 提取时间
      print(dt.time())
      # 转换为时间戳
      print(dt.timestamp())
      
      # 格式化显示
      print(dt.strftime('%Y/%m/%d %H:%M:%S'))
    • timedelta

      from datetime import datetime, timedelta
      
      d1 = datetime(2018, 6, 19, 10, 11, 12)
      d2 = datetime(2018, 6, 20, 12, 14, 18)
      
      # 得到时间差对象timedelta
      delta = d2 - d1
      print(delta)
      print(type(delta))
      
      delta2 = timedelta(days=2, hours=3, minutes=4, seconds=6)
      print(delta2)
      
      d3 = d1 + delta2
      print(d3)
      
      # 天数
      print(delta2.days)
      # 除天以外的秒数
      print(delta2.seconds)
      # 总共的秒数
      print(delta2.total_seconds())

    模块使用

    • 定义:模块就像工具包一样,里面有很多工具(函数、类等),使用时导入即可

    • 分类:

      • 标准库:random、sys、os、time
      • 第三方:就是别人写好的一些模块,你自己拿来使用(使用pip即可进行安装)
      • 自定义:自己写的
    • 导入:

      import random                # 导入
      import random as rdm        # 导入后起别名
      from random import randint    # 指定导入
      from random import randint as rint    # 指定导入后起别名

      as说明:

      ​ 使用as起别名后,代码中只能使用别名。

      ​ 可以避免冲突,可写简化书写

    • 模糊导入:

      from random import *    

      说明:导入random模块中 __ all __ 列表指定的内容,不建议使用(不易跟踪代码)

    • 自定义模块

      • 新建一个文件(不要与其他模块同名)
      • 新建的文件名(除了后缀)就是模块名
      • 导入的方式与官方的相同
      • 文件名(模块名)就是命名空间,不同命名空间下的标识符可以相同
      • 当使用多个模块下的相同标识符时,可以通过且别名或者通过命名空间进行区分
    • 测试模块

      • 每个模块中都有一个变量__name__,它表示当前的模块名
      • 但是当该模块作为主文件启动时其值为'__main__'
      • 通过会通过下面的方式书写测试代码:
      if __name__ == '__main__':
          print('for test')
    • 包的使用

      • 定义:多个模块放在一个目录下,这个目录下必须有一个__init__.py文件,那么这个目录就是一个包
      • 说明:
        • __init__.py文件是一个目录称为包的标志,即使内容为空
        • 可以简化使用者对包内容的导入复杂度
    • 第三方模块的使用

      • 安装工具:pip
      • pip使用:
      pip -h/--help               # 查看帮助文档
      pip install 包名             # 安装指定软件包
      pip uninstall 包名           # 卸载指定软件包
      pip list                    # 列表显示所有的安装包
      pip show 包名                # 显示指定包的详情    
      • 说明:安装失败通常是安装目录没有权限或断网
  • 相关阅读:
    G a+b+c+d=?
    H Kuangyeye and hamburgers
    python 实现加法
    高精度板子
    angular项目一
    angular大牛的博客
    autocomplete
    angular的 表单
    快捷方式控制台调试each这种方法的时候怎么停
    自己练习的一些应该熟记的代码
  • 原文地址:https://www.cnblogs.com/swjblog/p/9677559.html
Copyright © 2011-2022 走看看