时间模块
时间的表示方式
格林尼治天文时间\世界协调时间(UTC):世界标准时间,北京时间等于UTC+8
夏令时(DST):是一种节约能源而人为规定时间制度,在夏季调快1个小时
时间的表示形式:
1、时间戳
以整型或浮点型表示时间的一个以秒为单位的时间间隔。代表当前时间与1970年1月1日相隔多少秒
2、元组
这个元组有以下9个整型内容
year
month
day
hours
minutes
seconds
weekday
Julia day
flag (1 或 -1 或0) #0代表UTC,1代表DST,-1代表自动判断
3、格式化字符串
%a 本地(locale)简化星期名称
%A 本地完整星期名称
%b 本地简化月份名称
%B 本地完整月份名称
%c 本地相应的日期和时间表示
%d 一个月中的第几天(01 - 31)
%H 一天中的第几个小时(24小时制,00 - 23)
%I 第几个小时(12小时制,01 - 12)
%j 一年中的第几天(001 - 366)
%m 月份(01 - 12)
%M 分钟数(00 - 59)
%p 本地am或者pm的相应符
%S 秒(01 - 61)
%U 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周
%w 一个星期中的第几天(0 - 6,0是星期天)
%W 和%U基本相同,不同的是%W以星期一为一个星期的开始。
%x 本地相应日期
%X 本地相应时间
%y 去掉世纪的年份(00 - 99)
%Y 完整的年份
%Z 时区的名字(如果不存在为空字符)
%% ‘%’字符
time模块
import time
返回当前时间的时间戳,浮点数形式,不需要参数
c = time.time()
print(c)
将时间戳转为UTC时间元组
t = time.gmtime(c)
print(t)
将时间戳转为本地时间元组
b = time.localtime(c)
print(b)
#将本地时间元组转成时间戳
m = time.mktime(b)
print(m)
将时间元组转成字符串
s = time.asctime(b)
print(s)
将时间戳转为字符串
p = time.ctime(c)
print(p)
将时间元组转换成给定格式的字符串,参数2为时间元组,如果没有参数2,默认转当前时间
q = time.strftime("%Y-%m-%d %X", b)
print(q)
print(type(q))
将时间字符串转为时间元组
w = time.strptime(q, "%Y-%m-%d %X")
print(w)
延迟一个时间,整型或者浮点型
#time.sleep(4)
返回当前程序的cup执行时间
#Unix系统始终返回全部的运行时间
#windows从第二次开始,都是以第一个调用此函数的开始间戳作为基数
y1 = time.clock()
print("%d" % y1) #输出:0
time.sleep(2)
y2 = time.clock()
print("%d" % y2) #输出:2
time.sleep(2)
y3 = time.clock()
print("%d" % y3) #输出:4
应用:
#CPU性能测试
import time
time.clock()
sum = 0
for i in range(100000000):
sum += i
print(time.clock()) #输出:10.298342311553466
datetime模块
datetime比time高级了不少,可以理解为datetime基于time进行了封装,提供了各位使用的函数,datetime模块的接口更直观,更容易调用
datatime模块中的类:
datetime 同时有时间和日期
timedelta 主要用于计算时间的跨度
tzinfo 时区相关
time 只关注时间
date 只关注日期
示例:
import datetime
#获取当前时间
d1 = datetime.datetime.now()
print(d1) #输出:2019-01-05 14:30:02.497453
print(type(d1)) #输出:<class 'datetime.datetime'>
#获取指定时间
d2 = datetime.datetime(1999, 10, 1, 10, 28, 25, 123456)
print(d2) #输出:1999-10-01 10:28:25.123456
#将时间转为字符串
d3 = d1.strftime("%Y-%m-%d %X")
print(d3) #输出:2019-01-05 14:30:02
print(type(d3)) #输出:<class 'str'>
#将格式化字符串转为datetime对象
#注意:转换的格式要与字符串一致
d4 = datetime.datetime.strptime(d3, "%Y-%m-%d %X")
print(d4) #输出:2019-01-05 14:30:02
d5 = datetime.datetime(1999, 10, 1, 10, 28, 25, 123456)
d6 = datetime.datetime.now()
d7 = d6 - d5
print(d7) #输出:7036 days, 4:01:37.373997
print(type(d7)) #输出:<class 'datetime.timedelta'>
#间隔的天数
print(d7.days) #输出:7036
#间隔天数除外的秒数
print(d7.seconds) #输出:14497
日历模块
调用:
import calendar
返回指定某年某月的日历
print(calendar.month(2019, 7))
#输出:
July 2019
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 30 31
返回指定年的日历
print(calendar.calendar(2016))
闰年返回True,否则返回False
print(calendar.isleap(2000))
#输出:True
返回某个月的weekday的第一天和这个月所有的天数
print(calendar.monthrange(2019, 7))
#输出:(0, 31)
返回某个月以每一周为元素的列表
print(calendar.monthcalendar(2019,7))
#输出:[[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, 0, 0, 0]]