• No.007-Python-学习之路-Day5-模块简介|time&datetime


    模块简介

    定义

    用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能);

    本质就是.py结尾的python文件;

    导入方法

    import module_name
    import module_name1, module_name2
    from module_name import * # 不建议使用
    from module_name import sayhi1 as hi # 导入函数块,及别名
    

    import的本质

    import module_name意为:将module_name.py上面所有的代码解释一遍并赋值给module_name;

    from module_name inport fun:将module_name.py上面所有的代码解释一遍并将fun函数代码块赋值给fun;

    包:用来逻辑上组织模块的,本质上是一个目录(带一个__init__.py模块的目录)

    import packet的本质是解释__init__.py文件,并赋值给packet;

    import packet ---> #<run __init__.py>  ------> from . import test 从相对路径导入模块,import test1异常原因,目测路径异常;

    导入优化

    当有某个模块中的函数在很多模块中调用时,建议使用:

    1 from module_name import fun # 相对import module_name 少了检索

    模块的分类

    标准库<内置模块>

    开源模块<第三方模块>

    自定义模块

     标准库-time

    相关注意点

    与时间相关的模块:time, datetime, calendar;

    time模块定义的大部分函数是直接调用C平台上的同名函数实现,这个模块功能不适用于所有平台;

    时间相关术语

    时间戳(timestamp):表示从1970-1-1[unix通用系统诞生]起的偏移量,单位s;

    Strucktime:时间元组;

    字符串: 按照一定规则,表示时间的字符串;

    UTC(Coordinated Universal Time世界协调时),世界标准时间,在北京时间UTF+8

    DST:夏令时

    time的获取

     1 # 获取当前时间的时间戳
     2 time.time()
     3 # 用于计算程序运行时间,本身存在无意义<包含sleep时间>,float
     4 time.perf_counter()
     5 # 用于计算程序运行时间,本身存在无意义<包含sleep时间>,inter
     6 time.perf_counter_ns()
     7 # 用于计算程序运行时间,本身存在无意义<不含sleep时间>,float
     8 time.process_time()
     9 # 用于计算程序运行时间,本身存在无意义<不含sleep时间>,inter
    10 time.process_time_ns()

    time的转换

    1 # 返回当前时间的时间戳
    2 timestamp = time.time() 
    3 # 返回时间元组,若为空,返回当前时间的时间元组
    4 struct = time.localtime(timestamp) 
    5 # 将时间元组转换为timeStr[%a %b %d %H:%M:%S %Y]
    6 time.asctime(struct)
    7 # 将时间戳转换为timeStr[%a %b %d %H:%M:%S %Y]
    8 time.ctime(timestamp)
    1 # timeStr <---> struct_time # 具体的format格式可以通过help(time)查看
    2 time.strptime("2019-1-1", "%Y-%m-%d")
    3 time.strftime("%Y-%m-%d", time.localtime())
    1 # timestamp <---> struct_time
    2 time.gmtime(time.time())
    3 time.localtime(time.time())
    4 time.mktime(time.localtime())

    time的其他的一些函数

    1 time.sleep() #系统睡眠时间

    datetime模块

    datetime模块中常用类

    date:日期对象,常用的属性有year,month,day;

    time: 时间对象

    datetime:日期时间对象,常用的属性有hour,minute,second,microsecond

    date对象详解

    date对象由year,month,day日期三部分构成

    1 import datetime
    2 today = datetime.date.today()
    3 # 访问属性
    4 print(today.year, today.month, today.day)

    date方法-日期大小比较

    >>> a=datetime.date(2017,3,1)
    >>> b=datetime.date(2017,3,15)
    >>> a.__eq__(b) # ==
    False
    >>> a.__ge__(b) # >=
    False
    >>> a.__gt__(b) # >
    False
    >>> a.__le__(b) # <=
    True
    >>> a.__lt__(b) # <
    True
    >>> a.__ne__(b)# !=
    True

    date方法-日期相差天数

    >>> import datetime
    >>> date1 = datetime.date(2019,1,1)
    >>> date2 = datetime.date(2019,2,6)
    >>> date1.__sub__(date2) # date1-date2
    datetime.timedelta(days=-36)
    >>> date1.__rsub__(date2) # date2-date1
    datetime.timedelta(days=36)
    >>> date1.__rsub__(date2).days # 显示为相差天数
    36
    >>> date1.__sub__(date2).days
    -36

    date方法-ISO标准时间

    >>> date1
    datetime.date(2019, 1, 1)
    >>> date1.isocalendar()
    (2019, 1, 2) # year年份,week number周数,weekday星期数(周一为1…周日为7)
    >>> date1.isoweekday()
    2 # weekday星期数(周一为1…周日为7)
    >>> date1.weekday()
    1 # weekday星期数(周一为0…周日为6)

    date方法-其他一些方法

    >>> a.timetuple() # 返回一个time.struct_time数组
    time.struct_time(tm_year=2017, tm_mon=3, tm_mday=22, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=81, tm_isdst=-1)
    
    >>> a = datetime.date(2017,3,22) 
    >>> a.toordinal() # 返回公元1-1-1到现在的天数
    
    
    >>> a = datetime.date(2017,3,22)
    >>> b = a.replace(2017,2,28) # 返回一个替换指定日期字段的新date对象
    >>> a
    datetime.date(2017, 3, 22)
    >>> b
    datetime.date(2017, 2, 28)
    
    >>> datetime.date.resolution #date对象表示日期的最小单位。这里是天
    datetime.timedelta(1)
    
    >>> time.time()
    1490165087.2242179
    >>> datetime.date.fromtimestamp(time.time()) #根据时间戳返回date对象
    datetime.date(2017, 3, 22)
     
    >>> datetime.date.today() # 返回当前日期对象
    datetime.date(2017, 3, 22)
    
    >>> datetime.date.max # 返回最大的年、月、日的数值
    datetime.date(9999, 12, 31)
    
    >>> datetime.date.min # 返回最小的年、月、日的数值
    datetime.date(1, 1, 1)

    date方法-格式化输出

    >>> a = datetime.date(2017,3,22
    >>> a.__format__('%Y-%m-%d') # 格式化方法1
    '2017-03-22'
    >>> a.strftime("%Y%m%d") # 格式化方法2
    '20170322'
    >>> a.__str__() # 简单转换为字符串
    '2017-03-22'
    >>> a.ctime()  # %a %b %d %H:%M:%S %Y
    'Wed Mar 22 00:00:00 2017'

     time对象介绍

    time类由hour小时、minute分钟、second秒、microsecond毫秒和tzinfo五部分组成,取值方法同date对象

     time([hour[, minute[, second[, microsecond[, tzinfo]]]]])

    time类方法-时间大小比较

     1 >>> a = datetime.time(12,20,59,899)
     2 >>> b = datetime.time(11,20,59,889)
     3 >>> a.__eq__(b)
     4 False
     5 >>> a.__ne__(b)
     6 True
     7 >>> a.__ge__(b)
     8 True
     9 >>> a.__gt__(b)
    10 True
    11 >>> a.__le__(b)
    12 False
    13 >>> a.__lt__(b)
    14 False

    time类方法

    #max(),min(),resolution()同date,格式化方法及ISO方法同date;

    datetime类

    datetime类可以看做是date类及time类的合体,其大部分方法和属性都继承于这两个类;

    datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]])

    datetime类独有的方法

    # 获取当前时区的时间,生成datetime对象
    >>> a = datetime.datetime.now()
    # 获取UTC时区的时间,生成datetime对象
    >>> b = datetime.datetime.utcnow()
    # date方法生成date对象
    >>> a.date()
    datetime.date(2020, 1, 3)
    # time方法生成time对象
    >>> a.time()
    datetime.time(9, 47, 20, 849864)
    # combine方法合并date及time对象为datetime对象
    >>> datetime.datetime.combine(a.date(),a.time())
    datetime.datetime(2020, 1, 3, 9, 47, 20, 849864)
    
    # 生成标准的timestruct格式时间
    >>> a.utctimetuple()
    time.struct_time(tm_year=2020, tm_mon=1, tm_mday=3, tm_hour=9, tm_min=47, tm_sec=20, tm_wday=4, tm_yday=3, tm_isdst=0)
    # 将timeStr转换为datetime对象
    >>> datetime.datetime.strptime('2020-1-2 15:30', '%Y-%m-%d %H:%M')
    datetime.datetime(2020, 1, 2, 15, 30)
    # 根据timestamp生成datetime对象
    >>> datetime.datetime.utcfromtimestamp(time.time())
    datetime.datetime(2020, 1, 3, 1, 56, 24, 802578)
    
    # 其他的类和方法继承于date及time对象,不赘述

    timedelta类

    timedelta类用来计算二个datetime对象的差值;

    此类中包含days<天数>,microseconds<微秒>,seconds<秒数>

     日期计算实操

    获取当前日期时间

    # 获取当前的日期及时间生成datetime对象
    >>> now = datetime.datetime.now()
    >>> now
    datetime.datetime(2020, 1, 3, 11, 2, 37, 731111)
    # 获取今天的日期
    >>> today = datetime.date.today()
    >>> today
    datetime.date(2020, 1, 3)
    # 获取当前的日期
    >>> now.date()
    datetime.date(2020, 1, 3)
    # 获取当前的时间
    >>> now.time()
    datetime.time(11, 2, 37, 731111)

    获取上个月第一天和最后一天的日期

    # 获取当天日期
    a = datetime.date.today()
    # 生成上个月最后一天
    final_day = datetime.date(a.year, a.month, 1) - datetime.timedelta(days=1)
    # 生成上个月第一天
    first_day = datetime.date(final_day.year, final_day.month, 1)

    时间差

    >>> start = datetime.datetime.now()
    >>> end = datetime.datetime.now()
    >>> (end-start).seconds # 可以为days,seconds,microsends等
    10

    计算14小时以后的时间

    >>> now = datetime.datetime.now()
    >>> after_14hour = now + datetime.timedelta(hours = 14)
    >>> print(after_14hour)
    2020-01-04 01:23:46.051222
    # 可以计算: 天(days), 小时(hours), 分钟(minutes), 秒(seconds), 微秒(microseconds).

     https://www.cnblogs.com/awakenedy/articles/9182036.html

    end

  • 相关阅读:
    JDBC_JDBCUtils2.0
    《Fast Approximate Anti-Aliasing (FXAA) (GLSL)》
    《为什么在多核处理器下需要内存屏障(MenmoryBarrier)?》
    《LINUX KERNEL MEMORY BARRIERS》
    《内存对齐与回调函数参数》
    《Anti-aliasing》
    《Deferred Shading》
    《Bloom》
    《Gamma校正》
    《HDR》
  • 原文地址:https://www.cnblogs.com/FcBlogPythonLinux/p/12134038.html
Copyright © 2020-2023  润新知