您的位置:首页 > 编程语言 > Python开发

Python学习笔记【week03day1】时间和日期模块,面向对象

2019-06-17 20:02 375 查看

时间和日期模块,面向对象

  • 面向对象
  • 时间和日期模块

    python提供了一个time和calendar模块可以用于格式化日期和时间.时间间隔是以秒为单位的浮点小数

    每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示

    UTC :格林威治天文时间,世界标准时间,在中国为UTC+8

    DST:夏令时是一种节约能源而人为规定的时间制度,在夏季调快一小时.

    time

    引入第三方库“ import time ”

    1)#当前时间的时间戳,浮点数
    time1 = time.time()
    1522159406.3535008
    
    2.1)#时间戳(浮点数)转换为UTC时间(格林威治天文时间**加粗样式**)
    gm = time.gmtime(time1)
    注意:gm是元组,包含9个元素
    time.struct_time(tm_year=2018, tm_mon=3, tm_mday=27, tm_hour=14, tm_min=3, tm_sec=26, tm_wday=1, tm_yday=86, tm_isdst=0)
    
    2.2)# 时间戳转为本地时间(也是元组,包含9个元素)
    lt = time.localtime(time1)
    time.struct_time(tm_year=2018, tm_mon=3, tm_mday=27, tm_hour=22, tm_min=3, tm_sec=26, tm_wday=1, tm_yday=86, tm_isdst=0)
    
    3)#本地时间元组转为时间戳
    mt = time.mktime(lt)
    1522159406.0
    
    4.1)# 将时间戳转换为字符串(浮点 转 格式化输出的日期格式)
    ct = time.ctime(time1)
    'Tue Mar 27 22:03:26 2018'
    
    4.2)# 时间元组格式转为字符串(元组 转 格式化输出的日期格式)
    st = time.asctime(lt)
    'Tue Mar 27 22:03:26 2018'

    %Y 完整的年份
    %m 月份(01 - 12)
    %M 分钟数(00 - 59
    %d 一个月中的第几天(01 - 31)
    %S 秒(01 - 61)
    %H 一天中的第几个小时(24小时制,00 - 23)
    %X 本地相应时间 (时分秒)
    %x 本地相应日期

    4.3)# 将本地时间元组转为指定的格式的字符串
    time1 = time.time()         时间戳,浮点
    lt = time.localtime(time1)      时间戳 转 元组
    strf = time.strftime("%Y-%m-%d %H:%M:%S", lt)   元组 转 字符串(自定义格式)
    '2018-03-27 22:03:26'
    
    4.4) # 将指定时间格式的字符串,转为时间元组   (自定义格式字符串转元组)
    strp = time.strptime('2018-03-27 22:03:26','%Y-%m-%d %X')
    time.struct_time(tm_year=2018, tm_mon=3, tm_mday=27, tm_hour=22, tm_min=3, tm_sec=26, tm_wday=1, tm_yday=86, tm_isdst=-1)
    
    5)#休眠 单位s
    time.sleep(2)
    
    6)# 以浮点数计算的秒数返回当前cpu的时间,用来衡量不同的程序的耗时
    time.clock()
    xxxxxx
    xxxxxx
    time.sleep(2)
    print(time.clock())
    注意:这里不计算休眠时间time.sleep(2)
    计算运算效率:末尾直接print(time.clock())打印的是从第一次time.clock()至现在的时间

    datetime

    datetime比time高级了不少,可以理解为datetime基于time进行了封装,提供了更多的实用的函数

    #导入datetime模块
    import datetime
    
    1.1) #获取系统当前时间
    datetime.datetime.now()
    <class 'datetime.datetime'>
    2019-06-17 19:04:16.693655
    
    1.2) #  获取指定时间
    datetime.datetime(2018, 3, 28, 21, 59, 7, 95015)
    2018-03-28 22:47:11.006712
    
    2) # 将时间转为字符串
    time3 = datetime.datetime.strftime("%Y-%m-%d")
    '2018-03-28'
    
    3) #时间相减,返回一个时间间隔的"对象"
    t1 = datetime.datetime.now()
    # t2 = datetime.datetime(2018, 3, 28, 22, 53, 24, 709216)
    t2 = datetime.datetime(2019, 6, 17, 19, 13, 24, 709216)
    
    print(t1)
    # 2019-06-17 19:09:45.660159
    
    print(t2)
    # 2018-03-28 22:53:24.709216
    #2019-06-17 19:13:24.709216
    
    t3 = t1 - t2
    print(t3)
    #如果大于1天:445 days, 20:16:20.950943
    # 小于一天:0:01:29.416777
    
    print(t3.days)
    #445
    0
    
    print(t3.seconds)
    #73153
    89

    calendar

    处理年历和月历

    1. 返回指定的某月
      import calendar

      c1 = calendar.month(2019, 6)
      print(c1)


    2. 返回指定某年的日历

    calendar.calendar(2019)


    3. 判断某一年是否为闰年,如果是返回True,否则返回False

    calendar.isleap(2018)
    False

    4 返回在y1,y2之间闰年的总数

    calendar.leapdays(2018, 2080)
    15

    5 返回某年某月的weekday的第一天和这个月所有的天数

    c1 = calendar.monthrange(2019,6)
    (5, 30)
    index 5:表示6月1日是星期六

    6 返回某个月以每一周为元素的序列

    c1 = calendar.monthcalendar(2019, 5)
    
    [[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, 31, 0, 0]]

    7 返回给定日期的日期码

    c1 = calendar.weekday(2019,6,17)
    0
    备注:0表示周1,6表示周日

    面向对象

    是一种设计思想,基于万物皆对象这个哲学观点

    面向过程

    在生活中:

    它是一种看待问题的思维方式,在思考问题的时候,着眼问题是怎样一步一步解决的,然后亲力亲为去解决问题[类似于公司里的执行者]

    在程序中:

    代码是从上而下顺序执行,各个模块之间的关系尽可能简单,在功能上相对独立,程序的流程在写程序的时候就已经决定.

    面向对象

    在生活中:

    它是另一种看待问题的方式,它着眼于找到一个具有特殊功能的个体,然后委托这个个体去帮你完成某件事.这是更符合人类思考习惯的思想[指挥者]

    在程序中:

    把数据以及对数据的操作方法放在一起,作为一个相互依存的整体–对象

    把同类的对象进行抽象出其共性,形成类

    类中大多数数据,只能用本类的方法进行处理

    类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信

    程序执行的流程由用户在使用的过程中决定

    使用面向对象进行开发,需要先找到具有所需功能更的对象来使用,如果这个对象不存在,那么则需要创建这么一个具有所需功能的对象

    注意:面向对象只是一种思想,并不是一门编程语言.

    区别总结

    a. 都是看待问题的一种思维方式,都能解决问题

    b. 面向过程着眼于所有的事情亲力亲为

    c. 面向对象着眼于找到一个具有特殊功能的对象,委托这个对象实现你需要实现的功能.

    python语言是面向对象的程序设计语言,类和对象是面向对象的核心

    例子

    class Person():
    #自定义函数方法
    def run(self):
    print("run")
    def eat(self, food):
    print("eat "+food)
    
    #构造函数
    def __init__(self, name, age, height, weight):
    self.name = name
    self.age = age
    self.height = height
    self.weight = weight
    
    #析构函数
    def __del__(self):
    print("这里是析构函数")
    
    #看作是函数入口
    if __name__ == '__main__':
    #实例化对象
    per = Person("hanmeimei", 20, 170, 55)
    
    #释放对象
    del per
    #注意:对象释放后就不能再进行访问了
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: