Python中calendar,time,datetime模块详情解 -------18
常用模块
- calendar
- time
- datetime
- os
- shutil
- zip
- math
- string
- 上述使用理论上都应该先导入,string是特例
- calendar,time,datetime的区别参考中文意思
calendar
- 跟日历相关的模块
- calendar:获取一年的日历字符串
- 参数
- w = 每个日期之间的间隔字符数
- l = 每周所占用的行数
- c = 每个月之间的间隔字符数
In [6]:
#使用前先导入
import calendar
cal = calendar.calendar(2018)
print(cal)
print(type(cal))
2018January February March Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su1 2 3 4 5 6 7 1 2 3 4 1 2 3 48 9 10 11 12 13 14 5 6 7 8 9 10 11 5 6 7 8 9 10 11 15 16 17 18 19 20 21 12 13 14 15 16 17 18 12 13 14 15 16 17 18 22 23 24 25 26 27 28 19 20 21 22 23 24 25 19 20 21 22 23 24 25 29 30 31 26 27 28 26 27 28 29 30 31April May June Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su1 1 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 15 14 15 16 17 18 19 20 11 12 13 14 15 16 17 16 17 18 19 20 21 22 21 22 23 24 25 26 27 18 19 20 21 22 23 24 23 24 25 26 27 28 29 28 29 30 31 25 26 27 28 29 30 30July August September Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo 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 15 13 14 15 16 17 18 19 10 11 12 13 14 15 16 16 17 18 19 20 21 22 20 21 22 23 24 25 26 17 18 19 20 21 22 23 23 24 25 26 27 28 29 27 28 29 30 31 24 25 26 27 28 29 30 30 31October November December Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su1 2 3 4 5 6 7 1 2 3 4 1 28 9 10 11 12 13 14 5 6 7 8 9 10 11 3 4 5 6 7 8 9 15 16 17 18 19 20 21 12 13 14 15 16 17 18 10 11 12 13 14 15 16 22 23 24 25 26 27 28 19 20 21 22 23 24 25 17 18 19 20 21 22 23 29 30 31 26 27 28 29 30 24 25 26 27 28 29 3031<class 'str'>
In [8]:
cal = calendar.calendar(2018,l = 0 ,c = 5)
print(cal)
2018January February March Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su1 2 3 4 5 6 7 1 2 3 4 1 2 3 48 9 10 11 12 13 14 5 6 7 8 9 10 11 5 6 7 8 9 10 11 15 16 17 18 19 20 21 12 13 14 15 16 17 18 12 13 14 15 16 17 18 22 23 24 25 26 27 28 19 20 21 22 23 24 25 19 20 21 22 23 24 25 29 30 31 26 27 28 26 27 28 29 30 31April May June Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su1 1 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 15 14 15 16 17 18 19 20 11 12 13 14 15 16 17 16 17 18 19 20 21 22 21 22 23 24 25 26 27 18 19 20 21 22 23 24 23 24 25 26 27 28 29 28 29 30 31 25 26 27 28 29 30 30July August September Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo 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 15 13 14 15 16 17 18 19 10 11 12 13 14 15 16 16 17 18 19 20 21 22 20 21 22 23 24 25 26 17 18 19 20 21 22 23 23 24 25 26 27 28 29 27 28 29 30 31 24 25 26 27 28 29 30 30 31October November December Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su1 2 3 4 5 6 7 1 2 3 4 1 28 9 10 11 12 13 14 5 6 7 8 9 10 11 3 4 5 6 7 8 9 15 16 17 18 19 20 21 12 13 14 15 16 17 18 10 11 12 13 14 15 16 22 23 24 25 26 27 28 19 20 21 22 23 24 25 17 18 19 20 21 22 23 29 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,2018)# 包含左边不包含右边
Out[14]:
5
In [17]:
#mouth()获取某个月的日历字符串
#格式:calendar.month(2018,3)
m3 = calendar.month(2018,3)
print(m3)
March 2018 Mo Tu We Th Fr Sa Su1 2 3 45 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
In [19]:
# monthrange()获取一个月的周几开始和天数
#格式:calendar.monthrange(年,月)
#回值:元组(周几开始,总天数)
#注意:周默认0——6表示周一到周天
t = calendar.monthrange(2018,3)
print(t)
(3, 31)
In [22]:
# monthcalendar()获取一个月每天的矩阵列表
#格式:calendar.monthcalendar(年,月)
#回值:二级列表
#注意:矩阵中没有天数用0 表示
m = calendar.monthcalendar(2018,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(2018)
help(calendar.prcal)
2018January February March Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su1 2 3 4 5 6 7 1 2 3 4 1 2 3 48 9 10 11 12 13 14 5 6 7 8 9 10 11 5 6 7 8 9 10 11 15 16 17 18 19 20 21 12 13 14 15 16 17 18 12 13 14 15 16 17 18 22 23 24 25 26 27 28 19 20 21 22 23 24 25 19 20 21 22 23 24 25 29 30 31 26 27 28 26 27 28 29 30 31April May June Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su1 1 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 15 14 15 16 17 18 19 20 11 12 13 14 15 16 17 16 17 18 19 20 21 22 21 22 23 24 25 26 27 18 19 20 21 22 23 24 23 24 25 26 27 28 29 28 29 30 31 25 26 27 28 29 30 30July August September Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo 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 15 13 14 15 16 17 18 19 10 11 12 13 14 15 16 16 17 18 19 20 21 22 20 21 22 23 24 25 26 17 18 19 20 21 22 23 23 24 25 26 27 28 29 27 28 29 30 31 24 25 26 27 28 29 30 30 31October November December Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su1 2 3 4 5 6 7 1 2 3 4 1 28 9 10 11 12 13 14 5 6 7 8 9 10 11 3 4 5 6 7 8 9 15 16 17 18 19 20 21 12 13 14 15 16 17 18 10 11 12 13 14 15 16 22 23 24 25 26 27 28 19 20 21 22 23 24 25 17 18 19 20 21 22 23 29 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(2019,1)
January 2019 Mo Tu We Th Fr Sa Su1 2 3 4 5 67 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
In [29]:
#weekday()获取周几
#格式:calendar.weekday(年,月,日)
#返回值:周几对应的数字
calendar.weekday(2019,1,4) #从0 开始代表周一
Out[29]:
4
time 模块
时间戳
- 一个时间的表示,根据不同的语言,可以是整数或者浮点数
- 是从1970年1月1日0时0分0秒到现在经历的秒数
- 如果是表示1970年以前或者更遥远的未来,可能出现异常
- 32位操作系统能够支持到2038年
UTC时间
- 世界标准时间
- 中国为UTC+8 东八分区
夏令时
- 夏天将时间调快一个小时
时间元组
一个包含时间内容的普通元组字段 属性 值4位年数 tm_year 2017月 tm_mon 1到12日 tm_mday 1到31小时 tm_hour 0到23分钟 tm_min 0到59秒 tm_sec 0到61(60或61是润秒)一周的第几日 tm_wday 0到6(0是周一)一年的第几日 tm_yday 1到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 -28800 0
In [36]:
#得到时间戳
time.time()
Out[36]:
1545841360.1504376
In [38]:
#返回当前时间
t = time.localtime()
print(t)
print(t.tm_year)
time.struct_time(tm_year=2018, tm_mon=12, tm_mday=27, tm_hour=0, tm_min=24, tm_sec=14, tm_wday=3, tm_yday=361, tm_isdst=0) 2018
In [39]:
#asctime()返回元组的正常字符串化后的时间格式
t = time.localtime()
tt = time.asctime(t)
print(tt)
Thu Dec 27 00:25:58 2018
In [40]:
# ctime:获取字符串化的当前时间
t = time.ctime()
print(t)
Thu Dec 27 00:27:18 2018
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)
0 1 2 3 4 5 6 7 8 9
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)
2018年12月27日 00:49
datetime模块
- 提供日期和时间的运算和表达
- 常见属性
- datetime.data :提供年,月,日 属性
- datetime.time :hour,minute,sec等
- datetime.datetime:提供日期跟时间的组合
- datetime.timedelta:提供一个时间差,时间长度
In [57]:
import datetime
print(datetime.date(2018,3,3))
print(datetime.time(3,3,3))
2018-03-03 03: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'))
2018年12月27日 01:09 2018年12月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.176306335022673 7.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 0 This is 1 This is 2 This is 0 This is 1 This is 2 This is 0 This is 1 This is 2 This is 0 This is 1 This is 2 This is 0 This is 1 This is 2 0.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 0 This is 1 This is 2 This is 0 This is 1 This is 2 This is 0 This is 1 This is 2 This is 0 This is 1 This is 2 This is 0 This is 1 This is 2 0.009518415026832372
Python中calendar,time,datetime模块详情解 -------18相关推荐
- python 当前时间的前一天_python中time、datetime模块的使用
python中time.datetime模块的使用 1.前言 如果您从事过python web的开发,那一定有过这样的经历,对于各种复杂繁琐的业务逻辑,掺杂着各种各样的时间约束,让人很容易搞的头晕眼花 ...
- Python标准库datetime之datetime模块详解
Python标准库datetime之datetime模块详解 1.日期时间对象 日期时间对象是指具有日期(年月日)和时间(时分秒)双重属性的实例 日期时间对象的类型为datetime.datetime ...
- python six模块详解_对python中的six.moves模块的下载函数urlretrieve详解
实验环境:windows 7,anaconda 3(python 3.5),tensorflow(gpu/cpu) 函数介绍:所用函数为six.moves下的urllib中的函数,调用如下urllib ...
- Python基础学习之 os 模块详解
Python基础学习之 os 模块详解 文章目录 Python基础学习之 os 模块详解 1. 路径操作 1.1 os.chdir(),切换当前工作目录: 1.2 os.getcwd(),返回工作目录 ...
- python常用内置模块-Python常用内置模块之xml模块(详解)
xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.从结构上,很像HTML超文本标记语言.但他们被设计的目的是不同的,超文本标记语言被设计用来显示 ...
- 【Python】8000字:Python时间系列之datetime模块
公众号:尤而小屋 作者:Peter 编辑:Peter 大家好,我是Peter~ 在上篇Python或Pandas时间序列的文章中Peter详细介绍了time模块,本文中重点介绍的是datetime模块 ...
- python中根据字符串导入模块module
python中根据字符串导入模块module 需要导入importlib,使用其中的import_module方法 import importlibmodname = 'datetime'dateti ...
- python中的subprocess.Popen()使用详解---以及注意的问题(死锁)
从python2.4版本开始,可以用subprocess这个模块来产生子进程,并连接到子进程的标准输入/输出/错误中去,还可以得到子进程的返回值. subprocess意在替代其他几个老的模块或者函数 ...
- Python 标准库之 sys 模块详解
Python sys 模块详解 1. 简介 "sys"即"system","系统"之意.该模块提供了一些接口,用于访问 Python 解释器 ...
最新文章
- 中文任务全面超越BERT:百度正式发布NLP预训练模型ERNIE(附项目地址)
- 解决Ext JS 4.1版本Tree在刷新时选择第一行的问题
- 1.DBCP和CP30的区别
- [HDOJ4588]Count The Carries(数学,规律)
- 可以通过执行报表RSVMCRT_MINI_DEBUGGER 查看CRM IPC中定价计算公式的相关源代码
- xdebug+webgrind
- linux下编译geos,linux下编译GDAL3.x(集成Proj和Geos等)
- java根号n元素的合并排序算法_根号N段合并排序
- UnFlow:具有双向普查损失的光流的无监督学习
- 学习【瑞吉外卖①】SpringBoot单体项目
- 【ACWing】4246. 最短路径和
- C#_打包发布变成一个绿色版本软件——Costura.Fody合并DLL和EXE
- 视频号小店新订单如何实时同步企业微信
- IMPERVA- 系统导出
- Triplet Loss 实现
- 红黑树Red/Black Tree
- 数值计算笔记-部分主元消去cholesky分解
- android 通讯录搜索算法,一个简单的通讯录联系人拼音匹配算法
- 牛客--2019快手--获得最多的奖金
- PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析