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