(1)日历模块
calendar()
获取指定年份的日历字符串
格式:calendar.calendar(年份,w=2,l=1,c=6,m=3); 返回值:字符串;
w表示 2个日期之间的间隔字符长度; l表示 一个周占用几个行高度;
c表示2个月份之间的空白间隔; m表示一行显示几个月;
import calendar
ren = calendar.calendar(2018,w=2,l=1,c=6,m=3)
print(ren)
效果图:
month()
获取指定年月的日历字符串
格式:calendar.month(年,月,w=2,l=1); 返回值:字符串
import calendar
ren = calendar.month(2018,12,w=2,l=1)
print(ren)
效果图:
monthcalendar()
获取一个年月的矩阵列表
格式:calendar.monthcalendar(年,月); 返回值:二级列表;
结果中0表示不是该月的数值,1-31才是当月信息
import calendar
ren = calendar.monthcalendar(2018,12)
for page in ren:
print(page)
效果图:
isleap()
检测指定年份是不是闰年
格式:calendar.isleap(年份); 返回值:布尔值;
import calendar
ren = calendar.isleap(2018)
print(ren)
# 结果: False
red = calendar.isleap(2016)
print(red)
# 结果: True
leapdays()
检测指定年份之间的闰年个数
格式:calendar.leapdays(开始年份,结束年份); 返回值:整数; 注意:包含开始年份不包含结束年份;
import calendar
ren = calendar.leapdays(1996,2018)
print(ren)
# 结果: 6
# 分别是: 1996,2000,2004,2008,2012,2016年是闰年,共有6个
monthrange()
获取一个月的周几开始及当月天数
格式:calendar.monthrange(年,月); 返回值:元组(周几,天数); 注意:0-6表示周一到周天;
import calendar
ren = calendar.monthrange(2018,12)
print(ren)
# 结果: (5, 31)
weekday()
根据年月日计算周几
格式:calendar.weekday(年,月,日); 返回值:整型; 注意:0-6表示周一到周天;
import calendar
ren = calendar.weekday(2018,12,31)
print(ren)
# 结果: 0
(2)时间戳
时间戳是一种用于表示时间的方式。从1970年1月1日0时0分0秒0毫秒开始到指定时间的秒数。世间戳也叫做unix时间戳,1970年1月1日成为unix元年。
作用:是为了方便时间的统一运算。
1.从1970年1月1日开始计算。
2.能够使用到2038年的某一天
3.如果使用太远的未来或者1970年以前的时间可能出现异常
(3)UTC时间
UTC时间又称之为世界协调时间。特指格林尼治天文台所在位置的时间也叫做格林尼治时间。
中国的时区是东八区,和世界协调时间差了8个小时,多个八个小时
(4)夏令时
夏令时就是通过在夏季将时间调快一小时,来提醒大家早睡早起身体好,节省蜡烛!
每天的时钟变成了25个小时,注意本质还是24个小时
(5)时间元组struct_time
格式:(年,月,日,时,分,秒,周几,一年中的第几天,是否是夏令时
import time
ren = time.localtime()
print(ren)
# 结果: time.struct_time(tm_year=2018, tm_mon=12, tm_mday=31, tm_hour=21, tm_min=4, tm_sec=51, tm_wday=0, tm_yday=365, tm_isdst=0)
print(type(ren))
# 类型: <class 'time.struct_time'>
索引 | 名称 | 内容 | 取值 |
0 | tm_year | 年 | 年份 |
1 | tm_mon | 月 | 1~12 |
2 | tm_mday | 日 | 1~31 |
3 | tm_hour | 时 | 1~23 |
4 | tm_min | 分 | 1~59 |
5 | tm_sec | 秒 | 1~61(60闰秒,61是历史保留) |
6 | tm_wday | 周几 | 0~6 |
7 | tm_yday | 一年中的第几天 | 1~366 |
8 | tm_isdst | 夏令时 | -1, 0, 1, -1是决定是否为夏令时的旗帜 |
(6)时间模块的函数
time()
获取当前本地的时间戳
格式:time.time(); 返回值:浮点数时间戳;
import time
ren = time.time()
print(ren)
# 结果如: 1546263088.7501929
localtime()
格式:time.localtime(); 返回值:本地时间元组
格式:time.localtime(时间戳); 返回值:指定时间戳的本地时间元组
import time
# 获取时间戳
res = time.time()
print(res)
# 获取时间元组
ren = time.localtime()
print(ren)
# 把时间戳转为时间元组
red = time.localtime(res)
print(red)
效果图:
asctime()
返回一个正常的可读的时间字符串
格式:time.asctime(时间元组); 返回值:时间字符串;
import time
ren = time.localtime() # 获取时间元组
red = time.asctime(ren)
print(red)
# 结果: Mon Dec 31 21:25:48 2018
gmtime()
格式:time.gmtime(); 返回值:当前UTC时间元组;
格式:time.gmtime(时间戳); 返回值:指定时间戳的UTC时间元组;
import time,datetime
ren = time.gmtime() # 当前UTC时间元组
print(ren)
# 结果: time.struct_time(tm_year=2018, tm_mon=12, tm_mday=31, tm_hour=13, tm_min=39, tm_sec=22, tm_wday=0, tm_yday=365, tm_isdst=0)
res = datetime.datetime.strptime('Dec 30, 2018 03:55:12 PM', '%b %d, %Y %I:%M:%S %p').timestamp() # 获取指定时间的时间戳
red = time.gmtime(res) # 指定时间戳的UTC时间元组
print(red)
# 结果: time.struct_time(tm_year=2018, tm_mon=12, tm_mday=30, tm_hour=7, tm_min=55, tm_sec=12, tm_wday=6, tm_yday=364, tm_isdst=0)
ctime()
格式: time.ctime(); 返回值:时间格式字符串;
格式: time.ctime(时间戳); 返回值:时间格式字符串;
import time,datetime
ren = time.ctime()
print(ren)
# 结果: Mon Dec 31 21:43:43 2018
# 获取指定时间的时间戳
res = datetime.datetime.strptime('Dec 30, 2018 03:55:12 PM', '%b %d, %Y %I:%M:%S %p').timestamp()
red = time.ctime(res)
print(red)
# 结果: Sun Dec 30 15:55:12 2018
mktime()
使用时间元组制作时间戳
格式:time.mktime(时间元组); 返回值:时间戳;
注意:按照本地时间来进行计算,如果想按照UTC时间计算,则是calendar.timegm()
import time,calendar
res = time.localtime() # 获取当前时间元组
ren = time.mktime(res)
print(ren)
# 结果如: 1546264020.0
red = calendar.timegm(res)
print(red)
# 结果如: 1546292820
sleep()
程序睡眠,使得程序在此处等待指定的时间
格式:time.sleep(时间秒数); 返回值:无;
strftime()
import time,datetime
# 格式化输出时间字符串
ren = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print(ren)
# 结果如: 2018-12-31 21:51:32