目录
2.2.2 time.localtime([secs]):将一个时间戳转换为当前时区的struct_time,即时间元组格式的时间
2.2.3 time.gmtime([secs]):将一个时间戳转换为UTC时区(0时区)的struct_time
2.2.4 time.mktime():将一个struct_time转化为时间戳
2.2.6 time.clock():睡眠函数,python 3.8之后clock()被移除了,可以使用time.perf_counter()或time.process_time()
2.2.6 time.strftime()返回字符串表示的当地时间
2.2.7 time.strptime():将格式字符串转化成struct_time
3.3.1 date.today():返回一个表示当前本地今天日期的date对象
3.3.2 date.fromtimestamp():根据给定的时间戳timestamp,返回一个date对象
3.3.3 date.weekday():返回weekday中的星期几
3.3.4 date.isoweekday():返回weekday中的星期几
3.3.5 date.isocalendar():返回时间对象的year/week/weekday(工作日)
3.3.6 date.strftime(fmt):返回自定义的格式时间字符串
3.4.1 time类的属性-hour、minute、second、 microsecond
3.4.2 time.replace():用给的的参数时分秒替换原有对象中的属性
3.4.3 time.isoformat():返回格式如:HH:MM:SS的时间字符串
3.4.4 time.strftime():返回自定义格式时间字符串
3.5.1 datetime.today():返回当前本地时间的datetime对象
3.5.2 datetime.now(tz):返回当前本地时间的datetime对象
3.5.3 datetime.fromtimestamp(timestamp[,tz]):根据时间戳创建一个datetime对象
3.5.4 datetime.strptime():将格式时间字符串转换成datetime对象
3.5.5 datetime类的属性-year、month、day、hour、minute、second
3.5.6 datetime.date():获取时间中的日期对象date
3.5.7 datetime.time():获取时间中的时间对象time
3.5.8 datetime.combine(date,time):根据date和time创建datetime对象
3.5.9 datetime.replace():替换原有时间,获得新的日期时间
3.5.10 mktime():将datetime对象转换成时间戳
3.5.11 datetime.weekday(time):返回一周中的星期几
3.5.12 datetime.isocaendar(time):以元组形式返回年月日
3.5.13 datetime.strftime(format):返回自定义的格式时间字符串
3.6.3 timedelta.total_seconds():获取总秒数
4.1.3 calendar.month_name:月的全称
4.1.4 calendar.month_abbr:月的简称
4.2.1 calendar.isleap(year):判断是否为闰年
4.2.2 calendar.month(year,month,w=2,I=1):返回指定年的某月
4.2.3 calendar.calenda(year,w=2,I=1,c=6):返回指定年的日历
4.2.4 calendar.HTMLCalendar():返回指定年的日历,html格式
一、基本概念
在python中与时间处理相关的模块有:time、datatime和calender
在python中表示时间的方式有:时间戳、格式化的时间字符串、元组(struct_time共9种元素)。由于time模块主要是调用c库实现的,所以在不同的平台可能会不同。
- 时间戳(timestamp):表示从1970年1月1号00:00:00开始到现在按秒计算的偏移量。tick单位(系统的相对时间,间隔以秒为单位的浮点数)最适合做日期运算。但是1970年之前的时间无法表示,UNIX和win都只支持到2038年某日。 type(time.time())返回的是float类型,返回时间戳的函数主要有time()、clock()等
- UTC(世界协调时),就是格林威治天文时间。在中国为UTC+8,DST夏令时。
- 元组方式:struct_time共有9个元素,返回struct_time的函数主要有gmtime()、localtime()、strptime()
二、time模块
2.1 时间元组
序号 |
属性 |
值 |
说明 |
1 |
tm_year |
2008 |
4位数的年份 |
2 |
tm_mon |
1-12 |
月份 |
3 |
tm_mday |
1-31 |
日 |
4 |
tm_hour |
0-23 |
时 |
5 |
tm_min |
0-59 |
分钟 |
6 |
tm_sec |
0-61(60或61是闰秒) |
秒 |
7 |
tm_wday |
0-6(0是周一) |
一周的第几天 |
8 |
tm_yday |
1-366(日历) |
一年的第几天 |
9 |
tm_isdst |
-1,0,1 |
其中-1是决定是否为夏令时 |
本地时间
#encoding=utf-8
import time
ls = time.localtime()
print(ls) # 时间元组
# 直接使用元组索引获取对应项的值
print("year:",ls[0])
print("month:",ls[1])
print("day:",ls[2])
#使用成员符号调用
print("year:",ls.tm_year)
print("month:",ls.tm_mon)
print("day:",ls.tm_mday)
格林威治时间
import time
ls = time.gmtime()
print(ls)
2.2 常用函数
2.2.1 time.time():返回当前时间的时间戳
>>> import time
>>> print(time.time())#表示当前时间距离1970年1月1日的秒数
1651716585.707484
>>> #对时间戳取整
>>> print(int(time.time()))
1651716586
2.2.2 time.localtime([secs]):将一个时间戳转换为当前时区的struct_time,即时间元组格式的时间
sec -- 转换为time.struct_time类型的对象的秒数。如果secs参数未提供,则以当前时间为准(即会默认调用time.time())
#未给定参数,默认会调用time.time()
>>> time.localtime()
time.struct_time(tm_year=2022, tm_mon=5, tm_mday=5, tm_hour=10, tm_min=12, tm_sec=21, tm_wday=3, tm_yday=125, tm_isdst=0)
>>> time.localtime(1440337405.85)
#给定参数
>>> time.localtime(1440337405.85)
time.struct_time(tm_year=2015, tm_mon=8, tm_mday=23, tm_hour=21, tm_min=43, tm_sec=25, tm_wday=6, tm_yday=235, tm_isdst=0)
2.2.3 time.gmtime([secs]):将一个时间戳转换为UTC时区(0时区)的struct_time
参数secs--表示从1970-1-1 00:00:00以来的秒数。其默认值为time.time()
>>> time.gmtime()
time.struct_time(tm_year=2022, tm_mon=5, tm_mday=5, tm_hour=2, tm_min=19, tm_sec=19, tm_wday=3, tm_yday=125, tm_isdst=0)
>>> time.gmtime(123456.80)
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=2, tm_hour=10, tm_min=17, tm_sec=36, tm_wday=4, tm_yday=2, tm_isdst=0)
2.2.4 time.mktime():将一个struct_time转化为时间戳
➢ time.mktime() 函数执行与gmtime(), localtime()相反的操作,它接收struct_time对象作为参数,返回用秒数表示时间的浮点数。
➢ 参数:t -- 结构化的时间或者完整的9位元组元素。 如果输入的值不是一个合法的时间,将触发 OverflowError 或 ValueError。
>>> struct_time = time.localtime()
>>> struct_time
time.struct_time(tm_year=2022, tm_mon=5, tm_mday=5, tm_hour=10, tm_min=22, tm_sec=42, tm_wday=3, tm_yday=125, tm_isdst=0)
>>> time.mktime(struct_time)
1651717362.0
2.2.5 time.sleep():睡眠函数
单位为秒
time.sleep(10)#睡眠10秒钟
2.2.6 time.clock():睡眠函数,python 3.8之后clock()被移除了,可以使用time.perf_counter()或time.process_time()
以浮点数计算的秒数返回当前的CPU时间,用来衡量不同程序的耗时, 比time.time()更有用.返回的是当前处理器时间作为Unix上以秒为单位的浮点数。记的是CPU耗时,当前python进程在CPU上花费的时间
perf_counter()会包含sleep()休眠时间,适用测量短持续时间
process_time()不包括sleep()休眠时间期间经过的时间
import time
def procedure() :
time.sleep(5)
time1 = time.perf_counter()
procedure()
print (time.perf_counter() - time1, "seconds process time!")
#使用time.time()来计算程序耗时
time2 = time.time()
procedure()
print (time.time() - time2, "seconds!")
2.2.6 time.strftime()返回字符串表示的当地时间
把一个代表时间的元组或者struc_time(如由time.localtime()或time.gmtime()返回)转化为格式化的时间字符串,格式由参数format决定;没有指定的话,将传入time.localtime();如果元组中任何一个元素越界会跑出ValueError异常;函数返回的是一个可读表示的本地时间字符串。
命令格式:time.strftime(format,[t])
参数说明:format--是一个格式化字符串
t:可选的参数,是一个struc_time对象
- 时间字符串的格式化符号:
符号 |
说明(区分大小写) |
%a |
本地星期名称的简写(如星期四为Thu) |
%A |
本地星期名称的全称(如星期四为Thursday) |
%b |
本地月份名称的简写(如八月份为agu) |
%B |
本地月份名称的全称(如八月份为aguust) |
%c |
本地相应的日期和时间的字符串表示(如:15/08/27 10:20:06) |
%d |
一个月中的第几天(01-31) |
%H |
一天中的第几个小时(24小时制,00-23) |
%I |
第几个小时(12小时制,0 -11) |
%j |
一年中的第几天(001 -366) |
%m |
月份(01-12) |