常用模块
calendartimedatetimeosshutilzipmathstring上述使用理论上都应该先导入,string是特例calendar,time,datetime的区别参考中文意思calendar
跟日历相关的模块calendar:获取一年的日历字符串参数 w = 每个日期之间的间隔字符数l = 每周所占用的行数c = 每个月之间的间隔字符数In[6]:
#使用前先导入
import calendar
cal = calendar.calendar()
print(cal)
print(type(cal))
January February MarchMo Tu We Th Fr Sa SuMo Tu We Th Fr Sa SuMo Tu We Th Fr Sa Su1 2 3 4 5 6 71 2 3 41 2 3 48 9 10 11 12 13 14 5 6 7 8 9 10 11 5 6 7 8 9 10 1115 16 17 18 19 20 2112 13 14 15 16 17 1812 13 14 15 16 17 1822 23 24 25 26 27 2819 20 21 22 23 24 2519 20 21 22 23 24 2529 30 31 26 27 28 26 27 28 29 30 31April May JuneMo Tu We Th Fr Sa SuMo Tu We Th Fr Sa SuMo Tu We Th Fr Sa Su11 2 3 4 5 6 1 2 32 3 4 5 6 7 8 7 8 9 10 11 12 13 4 5 6 7 8 9 109 10 11 12 13 14 1514 15 16 17 18 19 12 13 14 15 16 1716 17 18 19 20 21 2221 22 23 24 25 26 2718 19 20 21 22 23 2423 24 25 26 27 28 2928 29 30 3125 26 27 28 29 3030July August SeptemberMo Tu We Th Fr Sa SuMo Tu We Th Fr Sa SuMo Tu We Th Fr Sa Su1 1 2 3 4 5 1 22 3 4 5 6 7 8 6 7 8 9 10 11 12 3 4 5 6 7 8 99 10 11 12 13 14 1513 14 15 16 17 18 1910 11 12 13 14 15 1616 17 18 19 20 21 2220 21 22 23 24 25 2617 18 19 20 21 22 2323 24 25 26 27 28 2927 28 29 30 31 24 25 26 27 28 29 3030 31October November DecemberMo Tu We Th Fr Sa SuMo Tu We Th Fr Sa SuMo Tu We Th Fr Sa Su1 2 3 4 5 6 71 2 3 4 1 28 9 10 11 12 13 14 5 6 7 8 9 10 11 3 4 5 6 7 8 915 16 17 18 19 20 2112 13 14 15 16 17 1810 11 12 13 14 15 1622 23 24 25 26 27 2819 20 21 22 23 24 2517 18 19 20 21 22 2329 30 31 26 27 28 29 30 24 25 26 27 28 29 3031<class 'str'>
In[8]:
cal = calendar.calendar(,l = 0 ,c = 5)
print(cal)
January February MarchMo Tu We Th Fr Sa SuMo Tu We Th Fr Sa SuMo Tu We Th Fr Sa Su1 2 3 4 5 6 71 2 3 41 2 3 48 9 10 11 12 13 145 6 7 8 9 10 115 6 7 8 9 10 1115 16 17 18 19 20 2112 13 14 15 16 17 1812 13 14 15 16 17 1822 23 24 25 26 27 2819 20 21 22 23 24 2519 20 21 22 23 24 2529 30 31 26 27 28 26 27 28 29 30 31April May JuneMo Tu We Th Fr Sa SuMo Tu We Th Fr Sa SuMo Tu We Th Fr Sa Su1 1 2 3 4 5 6 1 2 32 3 4 5 6 7 87 8 9 10 11 12 134 5 6 7 8 9 109 10 11 12 13 14 1514 15 16 17 18 19 12 13 14 15 16 1716 17 18 19 20 21 2221 22 23 24 25 26 2718 19 20 21 22 23 2423 24 25 26 27 28 2928 29 30 31 25 26 27 28 29 3030JulyAugust SeptemberMo Tu We Th Fr Sa SuMo Tu We Th Fr Sa SuMo Tu We Th Fr Sa Su1 1 2 3 4 5 1 22 3 4 5 6 7 86 7 8 9 10 11 123 4 5 6 7 8 99 10 11 12 13 14 1513 14 15 16 17 18 1910 11 12 13 14 15 1616 17 18 19 20 21 2220 21 22 23 24 25 2617 18 19 20 21 22 2323 24 25 26 27 28 2927 28 29 30 31 24 25 26 27 28 29 3030 31October November DecemberMo Tu We Th Fr Sa SuMo Tu We Th Fr Sa SuMo Tu We Th Fr Sa Su1 2 3 4 5 6 71 2 3 4 1 28 9 10 11 12 13 145 6 7 8 9 10 113 4 5 6 7 8 915 16 17 18 19 20 2112 13 14 15 16 17 1810 11 12 13 14 15 1622 23 24 25 26 27 2819 20 21 22 23 24 2517 18 19 20 21 22 2329 30 31 26 27 28 29 30 24 25 26 27 28 29 3031
In[10]:
#isleap: 判断某一年是否为闰年
calendar.isleap(2000)
Out[10]:
True
In[14]:
#leapdays:获取指定年份之间的闰年个数
calendar.leapdays(2000,)# 包含左边不包含右边
Out[14]:
5
In[17]:
#mouth()获取某个月的日历字符串
#格式:calendar.month(,3)
m3 = calendar.month(,3)
print(m3)
March Mo Tu We Th Fr Sa Su1 2 3 45 6 7 8 9 10 1112 13 14 15 16 17 1819 20 21 22 23 24 2526 27 28 29 30 31
In[19]:
# monthrange()获取一个月的周几开始和天数
#格式:calendar.monthrange(年,月)
#回值:元组(周几开始,总天数)
#注意:周默认0——6表示周一到周天
t = calendar.monthrange(,3)
print(t)
(3, 31)
In[22]:
# monthcalendar()获取一个月每天的矩阵列表
#格式:calendar.monthcalendar(年,月)
#回值:二级列表
#注意:矩阵中没有天数用0 表示
m = calendar.monthcalendar(,3)
print(m)
[[0, 0, 0, 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, 30, 31, 0]]
In[26]:
#prcal:直接打印日历
calendar.prcal()
help(calendar.prcal)
January February MarchMo Tu We Th Fr Sa SuMo Tu We Th Fr Sa SuMo Tu We Th Fr Sa Su1 2 3 4 5 6 71 2 3 41 2 3 48 9 10 11 12 13 14 5 6 7 8 9 10 11 5 6 7 8 9 10 1115 16 17 18 19 20 2112 13 14 15 16 17 1812 13 14 15 16 17 1822 23 24 25 26 27 2819 20 21 22 23 24 2519 20 21 22 23 24 2529 30 31 26 27 28 26 27 28 29 30 31April May JuneMo Tu We Th Fr Sa SuMo Tu We Th Fr Sa SuMo Tu We Th Fr Sa Su11 2 3 4 5 6 1 2 32 3 4 5 6 7 8 7 8 9 10 11 12 13 4 5 6 7 8 9 109 10 11 12 13 14 1514 15 16 17 18 19 12 13 14 15 16 1716 17 18 19 20 21 2221 22 23 24 25 26 2718 19 20 21 22 23 2423 24 25 26 27 28 2928 29 30 3125 26 27 28 29 3030July August SeptemberMo Tu We Th Fr Sa SuMo Tu We Th Fr Sa SuMo Tu We Th Fr Sa Su1 1 2 3 4 5 1 22 3 4 5 6 7 8 6 7 8 9 10 11 12 3 4 5 6 7 8 99 10 11 12 13 14 1513 14 15 16 17 18 1910 11 12 13 14 15 1616 17 18 19 20 21 2220 21 22 23 24 25 2617 18 19 20 21 22 2323 24 25 26 27 28 2927 28 29 30 31 24 25 26 27 28 29 3030 31October November DecemberMo Tu We Th Fr Sa SuMo Tu We Th Fr Sa SuMo Tu We Th Fr Sa Su1 2 3 4 5 6 71 2 3 4 1 28 9 10 11 12 13 14 5 6 7 8 9 10 11 3 4 5 6 7 8 915 16 17 18 19 20 2112 13 14 15 16 17 1810 11 12 13 14 15 1622 23 24 25 26 27 2819 20 21 22 23 24 2517 18 19 20 21 22 2329 30 31 26 27 28 29 30 24 25 26 27 28 29 3031Help on method pryear in module calendar:pryear(theyear, w=0, l=0, c=6, m=3) method of calendar.TextCalendar instancePrint a year's calendar.
In[27]:
#prmonth()直接打印整个月的日历
#格式:calendar.prmonth(年,月)
#返回值:无
calendar.prmonth(,1)
January Mo Tu We Th Fr Sa Su1 2 3 4 5 67 8 9 10 11 12 1314 15 16 17 18 19 22 23 24 25 26 2728 29 30 31
In[29]:
#weekday()获取周几
#格式:calendar.weekday(年,月,日)
#返回值:周几对应的数字
calendar.weekday(,1,4) #从0 开始代表周一
Out[29]:
4
time 模块
时间戳
- 一个时间的表示,根据不同的语言,可以是整数或者浮点数- 是从1970年1月1日0时0分0秒到现在经历的秒数- 如果是表示1970年以前或者更遥远的未来,可能出现异常- 32位操作系统能够支持到2038年
UTC时间
- 世界标准时间- 中国为UTC+8 东八分区
夏令时
- 夏天将时间调快一个小时
时间元组
一个包含时间内容的普通元组字段属性 值4位年数tm_year 月tm_mon 1到12日tm_mday 1到31小时tm_hour 0到23分钟tm_min 0到59秒tm_sec0到61(60或61是润秒)一周的第几日 tm_wday0到6(0是周一)一年的第几日 tm_yday1到366,一年中的第几天夏令时tm_isdst 是否为夏令时,值为1时是夏令时,值为0时不是夏令时,默认为-1
In[30]:
#导入
import time
In[35]:
#时间模块的属性
#timezone :当前时区和UTC时间相差的秒数,在没有夏令时的情况下的间隔,东八区是-28800
#altzone:当前时区和UTC时间相差的秒数,在有夏令时的情况下的间隔
#daylight:测当前是否是夏令时时间状态,0代表是
print(time.timezone)
print(time.altzone)
print(time.daylight)
-28800-288000
In[36]:
#得到时间戳
time.time()
Out[36]:
1545841360.1504376
In[38]:
#返回当前时间
t = time.localtime()
print(t)
print(t.tm_year)
time.struct_time(tm_year=, tm_mon=12, tm_mday=27, tm_hour=0, tm_min=24, tm_sec=14, tm_wday=3, tm_yday=361, tm_isdst=0)
In[39]:
#asctime()返回元组的正常字符串化后的时间格式
t = time.localtime()
tt = time.asctime(t)
print(tt)
Thu Dec 27 00:25:58
In[40]:
# ctime:获取字符串化的当前时间
t = time.ctime()
print(t)
Thu Dec 27 00:27:18
In[41]:
#mktime()使用时间元组获取相应的时间戳
#格式: time.mktime(时间元组)
#返回值:浮点数时间戳
lt = time.localtime()
ts = time.mktime(lt)
print(type(ts))
print(ts)
<class 'float'>1545841845.0
In[]:
#clock:获取CPU时间
In[45]:
#sleep:使进程进入睡眠状态,n秒后继续
for i in range(10):
print(i)
time.sleep(1)
0123456789
In[60]:
print('hahahaha')
hahahaha
strftime:将时间元组转化为自定义字符串格式
-python中时间日期格式化符号:格式 含义%y 两位数的年份表示(00-99)%Y 四位数的年份表示(000-9999)%m 月份(01-12)%d 月内中的一天(0-31)%H 24小时制小时数(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 当前时区的名称%% %号本身
In[51]:
#把时间格式表示成 年,月,日 时 的格式
t = time.localtime()
ft = time.strftime('%Y年%m月%d日 %H:%M',t)
print(ft)
12月27日 00:49
datetime模块
提供日期和时间的运算和表达常见属性 datetime.data :提供年,月,日 属性datetime.time :hour,minute,sec等datetime.datetime:提供日期跟时间的组合datetime.timedelta:提供一个时间差,时间长度In[57]:
import datetime
print(datetime.date(,3,3))
print(datetime.time(3,3,3))
-03-0303:03:03
In[59]:
#datetime.timedelta
from datetime import datetime,timedelta
t1 = datetime.now()#得到当前时间
print(t1.strftime('%Y年%m月%d日 %H:%M'))
td = timedelta(hours = 1)#表示一个小时的时间间隔
print((t1 +td).strftime('%Y年%m月%d日 %H:%M'))
12月27日 01:0912月27日 02:09
In[62]:
#测量程序运行时间间隔实验
t0 = time.time()
time.sleep(3)
t1 = time.time()
print(t1 - t0)
3.003554344177246
In[65]:
# timeit-时间测量工具
#生成列表的两种方式的比较
import timeit
c = '''
sum =[]
for i in range(1000):
sum.append(i)
'''
#利用timeit调用代码,执行100000次,查看运行时间
t1 = timeit.timeit(stmt='[i for i in range(1000)]',number = 100000)
#测量代码c 执行100000次运行结果
t2 = timeit.timeit(stmt=c,number=100000)
print(t1)
print(t2)
3.1763063350226737.545649177976884
In[67]:
help(timeit.timeit)
Help on function timeit in module timeit:timeit(stmt='pass', setup='pass', timer=<built-in function perf_counter>, number=1000000, globals=None)Convenience function to create Timer object and call timeit method.
In[69]:
# 测量一个函数的执行时间
def Doit():
num = 3
for i in range(num):
print('This is {0}'.format(i))
#函数重复执行5次
t = timeit.timeit(stmt = Doit,number = 5)
print(t)
This is 0This is 1This is 2This is 0This is 1This is 2This is 0This is 1This is 2This is 0This is 1This is 2This is 0This is 1This is 20.02160664601251483
In[73]:
s = '''
def Doit(num):
for i in range(num):
print('This is {0}'.format(i))
'''#形如字符串,实际上还是代码
#执行Doit(num)
#setup负责把环境变量准备好,把num=3传入代码
t = timeit.timeit('Doit(num)',setup=s+'num=3',number = 5)
print(t)
#函数执行顺序
"""
首先定义函数:def Doit(num):
...
然后传入参数:num = 3
最后运行:Doit(num)
"""
This is 0This is 1This is 2This is 0This is 1This is 2This is 0This is 1This is 2This is 0This is 1This is 2This is 0This is 1This is 20.009518415026832372
如果觉得《Python中calendar time datetime模块详情解 -------18》对你有帮助,请点赞、收藏,并留下你的观点哦!