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

posted @ 2020-01-03 13:39  FcBlogs  阅读(141)  评论(0编辑  收藏  举报