目录
一、介绍
二、常用函数
一、time
1.介绍
Python 的 time 模块提供了处理时间的函数。
time库主要包括三类函数:
- 时间获取:
计算机时间的表达
- 时间格式化:
提供获取系统时间并格式化输出功能
- 程序计时:
提供系统级精确计时功能,用于程序性能分析
2.时间获取
时间获取:time()、ctime()、gmtime()、localtime()
1.time()
:返回当前时间的时间戳(从1970年1月1日开始计时的秒数)。
import time
current_time = time.time()
print(current_time) # 1710147716.8113403
那为什么从970年1月1日开始计时呢?
1970年1月1日被称为“Unix纪元(Unix Epoch)”,它被广泛接受为计算机系统中的标准时间起点。Unix操作系统在设计之初选择1970年1月1日作为起始时间是因为以下几个原因:
- 时间简洁性:1970年1月1日没有任何特殊的历史事件或政治纠纷,这样可以使时间起点保持简洁和中立。
- 32位整数范围:Unix使用32位有符号整数来表示时间戳,而1970年1月1日是一个很方便的起点,可以涵盖几十年的时间范围。
- 兼容性:Unix操作系统在当时的计算机界非常流行,选择1970年1月1日作为时间起点可以使其他系统在时间表示上与Unix兼容。
从那时起,许多操作系统和编程语言都采用了类似的时间起点,因此UNIX纪元被广泛接受为计算机系统中的标准时间起点,并成为了时间表示的共同基准。
2.ctime()
:将一个时间戳转换为一个可读的字符串形式。
import time
current_time = time.time()
readable_time = time.ctime(current_time)
print(readable_time) # Mon Mar 11 17:01:32 2024
ctime()
函数会根据当前的本地时区来转换时间戳,所以返回的结果会因时区而异。
3.gmtime()
:将一个时间戳转换为 UTC 时区的 struct_time 对象。
import time
current_time = time.time()
utc_time = time.gmtime(current_time)
print(utc_time) # time.struct_time(tm_year=2024, tm_mon=3, tm_mday=11, tm_hour=9, tm_min=1, tm_sec=0, tm_wday=0, tm_yday=71, tm_isdst=0)
GMT时间:Greenwich Mean Time,格林尼治平时,又称格林尼治平均时间或格林尼治标准时间。是指位于英国伦敦郊区的皇家格林尼治天文台的标准时间。
UTC时间:Universal Time Coordinated,中文名称:世界标准时间或世界协调时。
UNIX时间戳(timestamp):计算机中的UNIX时间戳,是以GMT/UTC时间
1970-01-01T00:00:00
为起点,到当前具体时间的秒数(不考虑闰秒)。这样做的目的,主要是通过“整数计算”来简化计算机对时间操作的复杂度。
4.localtime():
将一个时间戳转换为本地时区的 struct_time 对象。
import time
current_time = time.time()
local_time = time.localtime(current_time)
print(local_time) # time.struct_time(tm_year=2024, tm_mon=3, tm_mday=11, tm_hour=16, tm_min=57, tm_sec=50, tm_wday=0, tm_yday=71, tm_isdst=0)
struct_time格式,它包含了许多元素,这些元素的值都是通过浮点数来提供的
struct_time字母元素含意:
元素 | 含义 | 取值 |
tm_year | 年 | 4位数字,如2024 |
tm_mon | 月 | 1~12,如2 |
tm_mday | 日 | 1~31,如2 |
tm_hour | 时 | 0~23,如7 |
tm_min | 分 | 0~59,如50 |
tm_sec | 秒 | 0~61(60或61是闰秒) |
tm_wday | 一周的第几日 | 0~6(0为周一,依次类推) |
tm_yday | 一年的第几日 | 1~366(366为儒略历) |
tm_isdst | 夏令时 | 1:是夏令时 0:非夏令时 -1:不确定 |
3.时间格式化
时间格式化:strftime()、strptime()、asctime()
将时间以合理的方式展示出来
格式化:类似字符串格式化,需要有展示模板
展示模板由特定的格式化控制符组成
1.strftime()
strftime()函数借助时间格式控制符来输出格式化的时间字符串。
strftime(tpl,ts)函数有两条参数,其中一个为tpl(格式化的模板字符串参数,用来定义输出效果),另一个为ts(是计算机内部时间类型变量,默然为当地标准时间)
import time
date = time.strftime("%Y-%m-%d")
print(date) # 2024-03-11
格式字符 | 含义 |
%a | 星期的简写。如 星期三为Web |
%A | 星期的全写。如 星期三为Wednesday |
%b | 月份的简写。如4月份为Apr |
%B | 月份的全写。如4月份为April |
%c | 日期时间的字符串表示。(如: 04/07/10 10:43:39) |
%d | 日在这个月中的天数(是这个月的第几天) |
%f | 微秒(范围[0,999999]) |
%H | 小时(24小时制,[0, 23]) |
%I | 小时(12小时制,[0, 11]) |
%j | 日在年中的天数 [001,366](是当年的第几天) |
%m | 月份([01,12]) |
%M | 分钟([00,59]) |
%p | AM或者PM |
%S | 秒(范围为[00,61],为什么不是[00, 59],参考python手册_) |
%U | 周在当年的周数当年的第几周),星期天作为周的第一天 |
%w | 今天在这周的天数,范围为[0, 6],6表示星期天 |
%W | 周在当年的周数(是当年的第几周),星期一作为周的第一天 |
%x | 日期字符串(如:04/07/10) |
%X | 时间字符串(如:10:43:39) |
%y | 2个数字表示的年份 |
%Y | 4个数字表示的年份 |
%z | 与utc时间的间隔 (如果是本地时间,返回空字符串) |
%Z | 时区名称(如果是本地时间,返回空字符串) |
2.strptime()函数
strptime(str,tpl)tpl:是格式化模板字符串,用来定义输入效果
str是字符串形式的时间值,所以他的格式为前面为字符串,后面为字符串的格式,然后输出的格式为struct_time。
import time
date = time.strptime("2022-10-31", "%Y-%m-%d")
print(date) # time.struct_time(tm_year=2022, tm_mon=10, tm_mday=31, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=304, tm_isdst=-1)
3.asctime()函数
asctime([t])转换由 gmtime() 或 localtime() 所返回的表示时间的元组或 struct_time 为形式的字符串
如果未提供 t,则会使用 localtime() 所返回的当前时间。
import time
date = time.asctime()
print(date) # Mon Mar 11 17:26:50 2024
具体就是能将输入的一些函数格式( localtime() 、gmtime()生成的格式)或(元组是9个元素,分别是年,月,日,时,分,秒,星期,第几天,夏令时asctime((2020,12,3,11,3,3,0,211,0))
)格式生成 'Mon Oct 31 11:43:08 2022'
的样子
4.程序计时
程序计时:sleep()、perf_counter()
1.perf_counter()函数
测量时间指的是能够记录时间的流逝: perf_counter()获取计算机中CPU也就是中央处理器以其频率运行的时钟纳秒计算,非常精确。
回一个CPU级别的精确时间计数值,单位为秒,由于这个计数值起点不确定,连续调用差值才有意义
import time
for i in range(10):
start = time.perf_counter()
print(start)
"""
0.4185709
0.4185881
0.4185924
0.418596
0.4185995
0.4186029
0.4186065
0.4186098
0.4186133
0.4186167
"""
2.sleep(secs)
:让程序休眠指定秒数。
import time
print("开始休眠")
time.sleep(5) # 休眠5秒
print("休眠结束")
二、datetime
1.介绍
在python中表示时间的格式有三种:时间戳、元组、格式化时间。与time模块类似,datetime模块也能够将datetime类型转换成这三种类型。
2.date:日期类
3.time:时间类
4.datetime:日期时间类
# 获取当前日期
# current_date = datetime.datetime.now()
# 指定日期
specified_date = datetime.datetime(2024, 4, 16)
# 将日期转换为星期
week_day = specified_date.strftime("%A")