文章目录
1、time库
1.1time库概述
time库是Python中处理时间的标准库
- 计算机时间的表达
- 提供获取系统时间并格式化输出功能
- 提供系统级精确计时功能,用于程序性能分析
1.2time库包括三类函数
- 时间获取:time() ctime() gmtime()
- 时间格式化:strftime() strptime()
- 程序计时:sleep(), perf_counter()
1.3时间获取
函数 | 描述 |
---|---|
time() | 获取当前时间戳,即计算机内部时间值,浮点数 |
ctime() | 获取当前时间并以易读方式表示,返回字符串 |
gmtime() | 获取当前时间,表示为计算机可处理的时间格式 |
>>>import time
>>>time.time()
1554734954.0231738 #返回当前时间的时间戳(1970纪元后经过的浮点秒数)
>>>time.ctime()
'Mon Apr 8 22:54:25 2019' #星期 月份 日期 具体时间点 年份
>>>time.gmtime()
`time.struct_time(tm_year=2019, tm_mon=4, tm_mday=8, tm_hour=14, tm_min=56, tm_sec=6, tm_wday=0, tm_yday=98, tm_isdst=0)
1.4时间格式化
将时间以合理的方式展示出来
- 格式化:类似字符串格式化,需要有展示模板
- 展示模板由特定的格式化控制符组成
- strftime()方法
函数 | 描述 |
---|---|
strftime(tpl, ts) | tpl是格式化模板字符串,用来定义输出效果ts是计算机内部时间类型变量 |
1.5格式化控制符
格式化字符串 | 日期/时间说明 | 值范围和实例 |
---|---|---|
%Y | 年份 | 0000~9999,例如:1900 |
%m | 月份 | 01~12,例如:10 |
%B | 月份名称 | January~December,例如:April |
%b | 月份名称缩写 | Jan~Dec,例如:Apr |
%d | 日期 | 01~31,例如:25 |
%A | 星期 | Monday~Sunday,例如:Wednesday |
%a | 星期缩写 | Mon~Sun,例如:Wed |
%H | 小时(24h制) | Mon~Sun,例如:Wed |
%h | 小时(12h制) | 01~12,例如:7 |
%p | 上/下午 | AM, PM,例如:PM |
%M | 分钟 | 00~59,例如:26 |
%S | 秒 | 00~59,例如:26 |
>>>import time
>>>t = time.gmtime()
>>>time.strftime("%Y-%m-%d %H:%M:%S",t)
'2019-04-08 15:10:52'
>>>timeStr = '2018-01-26 12:55:20'
>>>time.strptime(timeStr,"%Y-%m-%d %H:%M:%S")time.struct_time(tm_year=2018, tm_mon=1, tm_mday=26, tm_hour=12, tm_min=55, tm_sec=20, tm_wday=4, tm_yday=26, tm_isdst=-1)
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=26, tm_hour=12, tm_min=55, tm_sec=20, tm_wday=4, tm_yday=26, tm_isdst=-1)
1.6程序计时应用
程序计时应用广泛
- 程序计时指测量起止动作所经历时间的过程
- 测量时间:perf_counter()
- 产生时间:sleep()
函数 | 描述 |
---|---|
perf_counter() | 返回一个CPU级别的精确时间计数值,单位为秒由于这个计数值起点不确定,连续调用差值才有意义 |
sleep(s) | s拟休眠的时间,单位是秒,可以是浮点数 |
>>>start = time.perf_counter()
>>>start
5.1199927182325785e-06
>>>end = time.perf_counter()
>>>end
118.79227677542859
>>>end - start
118.79227165543587
sleep()
>>>def wait():
time.sleep(3.3)
>>>wait() #程序将等待3.3秒后再退出
2、datetime 库
要点:python时间处理的标准函数库datetime提供了一批显示日期和时间的格式化方法
2.1 datetime库概述
-
以不同格式显示日期和时间是程序中最常用到的功能。python提供了一个处理时间的标准函数库,datetime,它提供了一系列有艰难单到复杂的时间处理方法。datetime库可以从系统中获得时间,并以用户选择的格式输出。
-
datetime库以格林威治时间为基础,每天由3600×24秒精准定义。该库包括两个常量:datetime.MINYEAR和datetime.MAXYEAR,分别表示datetime所能表示的最小、最大年份,值分别为1和9999。
-
datetime库以类的方式提供多种日期和时间表达方式。
(1)datetime.date:日期表示类,可以表示年、月、日等。
(2)datetime.time:时间表示类,可以表示小时、分钟、秒、毫秒等。
(3)datetime.datetime:日期和时间表示类,功能覆盖date和time类。
(4)datetime.datedelta:与时间间隔有关的类。
(5)datetime.tzinfo:与时区有关的信息表示类。由于 datetime.datetime类表达形式最为丰富,这里主要介绍这个类的使用。使用datetime类需要用import保留字,引用datetime类的方式如下:
from datetime import datetime
2.2 datetime 库解析
datetime类(datetime.datetime类,以下简称为datetime类)的使用方式是首先创建一个datetime对象,然后通过对象的方法和属性显示时间。创建datetime对象有3种方法:datetime.now()、datetime.utcnow()和datetime.datetime()。
1、使用datetime.now()获得当前日期和时间对象,使用方法如下:
datetime.now()
返回一个datetime类型,表示当前的日期和时间,精确到微秒。
调用改函数,执行结果如下:
>>> from datetime import datetime
>>> today = datetime.now()
>>> today
datetime.datetime(2019, 4, 13, 13, 21, 50, 755456) # 年、月、日、时、分、秒、微秒
2、使用datetime.utcnow()获得当前日期和时间对应的UTC(世界标准时间)时间对象,使用方法如下:
datetime.utcnow()
返回一个达特time类型,表示当前的日期和时间的UTC表示,精确到微秒。
调用改函数,执行结果如下:
>>> today = datetime.utcnow()
>>> today
datetime.datetime(2019, 4, 13, 5, 26, 59, 553880) # 年、月、日、时、分、秒、微秒
3、datetime.now()和datetime.utcnow()都返回一个datetime类型的对象,也可以直接用datetime()构造一个日期和时间兑现个,使用方法如下:
datetime(year, month, day, hour = 0, minute = 0, second = 0, microsecond = 0)
注:
- year:指定的年份,MINYEAR <= year <= MAXYEAR
- microsecond:指定的微秒数,0 <= microsecond <= 1000000
调用该函数,执行结果如下:
>>> oneday = datetime(2021,6,30,9,9,9,999)
>>> oneday
datetime.datetime(2021, 6, 30, 9, 9, 9, 999) # 年、月、日、时、分、秒、微秒
2.3 datetime 类常用的时间格式化方法(3个)
属性 | 描述 |
---|---|
datetime.isoformat() | 采用 ISO 8601 标准显示时间 |
datetime.isoweekday() | 根据日期计算星期后返回1~7,对应星期一到星期日 |
datetime.strftime(format) | 根据格式化字符串format进行格式显示的方法 |
isoformat()和isoweekday()方法的使用如下:
>>> oneday = datetime(2021,6,30,9,9,9,999)
>>> oneday.isoformat()
'2021-06-30T09:09:09.000999'
>>> oneday.isoweekday()
3
strftime()方法是时间格式化最有效的方法,几乎可以以任何通用格式输出时间。例如下列所示,用该方法输出特定格式时间。strftime()方法的格式化控制符
>>> oneday.strftime("%Y-%m-%d %H-%M-%S")
'2021-06-30 09-09-09'
strftime()格式化字符串的数字左侧会自动补零,上述格式也可以与print()的格式化函数一起使用,例如:
>>> now = datetime.now()
>>> now.strftime("%Y-%m-%d")
'2019-04-13'
>>> now.strftime("%A, %d. %B %Y %I:%M%p")
'Saturday, 13. April 2019 01:55PM'
>>> print("今天是{0:%Y}年{0:%m}月{0:%d}日".format(now))
今天是2019年04月13日