文章目录
- struct_time元组
- python中时间日期格式化符号:
- 时间(Time)模块
- 日期(Calendar)模块
- 其他相关模块和函数
Python 提供了一个
time
和
calendar
模块可以用于格式化日期和时间。
时间间隔是以秒为单位的浮点小数。
每个时间戳(secs)都以自从1970年1月1日午夜(历元)经过了多长时间来表示。
struct_time元组
很多Python函数用一个元组装起来的9组数字处理时间,也就是struct_time元组。这种结构具有如下属性:
python中时间日期格式化符号:
- %y 两位数的年份表示(00-99)
- %Y 四位数的年份表示(000-9999)
- %m月份(01-12)
- %d 月内中的一天(0-31)
- %H24小时制小时数(0-23)
- %I 12小时制小时数(01-12)
- %M 分钟数(00=59)
- %S 秒(00-59)
- %a 本地简化星期名称
- %A 本地完整星期名称
- %b 本地简化的月份名称
- %B 本地完整的月份名称
- %c 本地相应的日期表示和时间表示
- %j 年内的一天(001-366)
- %p 本地A.M.或P.M.的等价符
- %U 一年中的星期数(00-53)星期天为星期的开始
- %w 星期(0-6),星期天为星期的开始
- %W 一年中的星期数(00-53)星期一为星期的开始
- %x 本地相应的日期表示
- %X 本地相应的时间表示
- %Z 当前时区的名称
- %% %号本身
时间(Time)模块
1、
time.time()
返回当前时间的时间戳(secs)(1970纪元后经过的浮点秒数)。
import time
print(time.time()) #输出1580462925.8417437
时间戳可用于time()模板的其他函数,localtime,gmtime,sleep等等
2、
time.localtime()
接收时间戳,并返回时间戳的当地时间下的时间元组。若参数为空,返回当地时间下的时间元组
import time
secs=time.time() #时间戳
print(time.localtime()) #参数为空,返回当地时间的当前时间元组
print(time.localtime(secs)) #返回指定时间戳的当地时间的时间元组
3、
time.gmtime()
接收时间戳,返回格林威治天文时间下的时间元组。
import time
secs=time.time() #时间戳
print(time.localtime(secs))
print(time.gmtime(secs))
locatime()和gmtime()接受的同一个时间戳(secs),返回的时间元组却不一样,这就是时差导致的
4、
time.asctime([tupletime]
)与time.strftime(fmt[,tupletime])
time.asctime([tupletime]):接受时间元组并返回一个可读的形式为”Tue Dec 11 18:07:14 2008”(2008年12月11日 周二18时07分14秒)的24个字符的字符串。
time.strftime(fmt[,tupletime]):接收以时间元组,并返回以可读字符串表示的当地时间,格式由fmt决定。
两者的区别就是格式不一样
,第二个函数格式由fmt决定
import time
secs=time.time() #时间戳
a=time.localtime(secs) #当地时间的时间元组
b=time.gmtime(secs) #格林威治时间的时间元组
print(time.asctime(a)) #获得时间的字符串
print(time.asctime(b)) #获得时间的字符串
print(time.strftime('%Y-%m-%d %H:%M:%S',a)) #获得格式化(指定格式)的时间字符串
运行结果:
Fri Jan 31 17:45:24 2020
Fri Jan 31 09:45:24 2020
2020-01-31 17:45:24
5、
time.sleep()
推迟调用线程的运行
import time
print('start:',time.ctime())
time.sleep(5) #从这一行推迟5秒进程
print('end:',time.ctime())
日期(Calendar)模块
1、
calendar.calendar(year,w=2,l=1,c=6)
返回一个多行字符串格式的year年年历,3个月一行,间隔距离为c。 每日宽度间隔为w字符。每行长度为21* W+18+2* C。l是每星期行数。
import calendar
print(calendar.calendar(2020,w=2,l=1,c=6))
运行结果:
2020
January February March
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 5 1 2 1
6 7 8 9 10 11 12 3 4 5 6 7 8 9 2 3 4 5 6 7 8
13 14 15 16 17 18 19 10 11 12 13 14 15 16 9 10 11 12 13 14 15
20 21 22 23 24 25 26 17 18 19 20 21 22 23 16 17 18 19 20 21 22
27 28 29 30 31 24 25 26 27 28 29 23 24 25 26 27 28 29
30 31
April May June
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 5 1 2 3 1 2 3 4 5 6 7
6 7 8 9 10 11 12 4 5 6 7 8 9 10 8 9 10 11 12 13 14
13 14 15 16 17 18 19 11 12 13 14 15 16 17 15 16 17 18 19 20 21
20 21 22 23 24 25 26 18 19 20 21 22 23 24 22 23 24 25 26 27 28
27 28 29 30 25 26 27 28 29 30 31 29 30
July August September
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 5 1 2 1 2 3 4 5 6
6 7 8 9 10 11 12 3 4 5 6 7 8 9 7 8 9 10 11 12 13
13 14 15 16 17 18 19 10 11 12 13 14 15 16 14 15 16 17 18 19 20
20 21 22 23 24 25 26 17 18 19 20 21 22 23 21 22 23 24 25 26 27
27 28 29 30 31 24 25 26 27 28 29 30 28 29 30
31
October November December
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 1 1 2 3 4 5 6
5 6 7 8 9 10 11 2 3 4 5 6 7 8 7 8 9 10 11 12 13
12 13 14 15 16 17 18 9 10 11 12 13 14 15 14 15 16 17 18 19 20
19 20 21 22 23 24 25 16 17 18 19 20 21 22 21 22 23 24 25 26 27
26 27 28 29 30 31 23 24 25 26 27 28 29 28 29 30 31
30
进程已结束,退出代码0
2、calendar.firstweekday( )
返回当前每周起始日期的设置。默认情况下,首次载入 calendar 模块时返回 0,即星期一。
import calendar
print(calendar.firstweekday()) #输出0
3、
calendar.isleap(year)
是闰年返回 True,否则为 False。
import calendar
print(calendar.isleap(2020)) #输出True
4、
calendar.leapdays(y1,y2)
返回在Y1,Y2两年之间的闰年总数
import calendar
print(calendar.leapdays(2020,2100)) #输出20
5、
calendar.month(year,month,w=2,l=1)
返回一个多行字符串格式的year年month月日历,两行标题,一周一行。每日宽度间隔为w字符。每行的长度为7* w+6。l是每星期的行数。
import calendar
print(calendar.month(2020,2,w=1,l=1))
运行结果:
February 2020
Mo Tu We Th Fr Sa Su
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29
6、calendar.monthcalendar(year,month)
返回一个整数的单层嵌套列表。每个子列表装载代表一个星期的整数。Year年month月外的日期都设为0;范围内的日子都由该月第几日表示,从1开始。
import calendar
print(calendar.monthcalendar(2020,2))
运行结果:
7、calendar.monthrange(year,month)
返回两个整数。第一个是该月的星期几的日期码,第二个是该月的日期码。日从0(星期一)到6(星期日);月从1到12。
import calendar
print(calendar.monthrange(2020,5)) #输出(4, 31)
8、calendar.prcal(year,w=2,l=1,c=6)
相当于 print calendar.calendar(2020,w=2,l=1,c=6)。
import calendar
calendar.prcal(2020,w=2,l=1,c=6)
9、calendar.prmonth(year,month,w=2,l=1)
相当于 print calendar.month(2020,2,w=2,l=1) 。
import calendar
calendar.prmonth(2020,2,w=3,l=1)
10、calendar.setfirstweekday(weekday)
设置每周的起始日期码。0(星期一)到6(星期日)
import calendar
calendar.setfirstweekday(3)
print(calendar.firstweekday()) #输出3,若没有第二条语句,则输出0
11、
calendar.timegm(tupletime)
和time.gmtime相反:接受一个时间元组形式,返回该时刻的时间戳(1970纪元后经过的浮点秒数)。
import calendar
import time
a=time.time()
print('gmtime:',time.gmtime(a))#gmtime用法
tupletime = (2020, 1, 31, 16, 34, 30)
print(calendar.timegm(tupletime))#timegm用法
12、calendar.weekday(year,month,day)
import calendar
print(calendar.weekday(2020,1,31)) #输出4,2020年1月31日是周五
其他相关模块和函数
在Python中,其他处理日期和时间的模块还有:
- datetime模块
- pytz模块
- dateutil模块