当前位置: 首页 > 后端技术 > Python

小白学 Python(22):time 和 calendar 模块简单使用

时间:2023-03-26 00:27:46 Python

小白学Python(22):时间和日历模块好用Python初学者入门(3):基本数据类型(下)Python入门入门(4):变量的基本操作Python入门入门(5):基础算子(上)Python入门篇(六):基础算子(下)小白学Python(七):过程控制基础(上)小白学Python(八):过程控制基础(下)小白学Python(九):数据结构基础(列表)(上)小白学习Python(十):数据结构基础(列表)(下)小白学习Python(十一):数据结构基础(元组)小白学习Python(12)):基本数据结构(词典)(下)小白学Python(13):基本数据结构(词典)(下)小白学Python(14):基本数据结构(集)(下)小白学Python(15):基本数据结构(集)(下)小白学Python(16):基本数据类型(函数)(下)Python初学者学习(17):基本数据类型(函数)(下)Python初学者入门(18):文件操作入门Python入门(18):Python入门入门文件操作(19):Python入门入门异常处理(20):初学者学习Python的迭代器基础知识(21):Generator基础知识时间模块今天我们要介绍一个经常使用的模块——time,顾名思义,这是一个与时间相关的模块。前面我们也介绍了常用的模块,比如os模块。在使用这些模块之前,我们需要先导入它们。time模块的导入方法如下:importtime先来个简单的例子:foriinrange(0,5):print(i)time.sleep(1)打印结果就不展示了同学们应该都猜到了。那么time.sleep(1)这句的作用是什么呢?sleep()方法是睡眠方法,也就是说程序执行到这里,什么都不做需要等待一段时间。上面代码执行的时候可以发现每1s会打印一个数字,这个数字在sleep()中给出的参数就是休眠时间,单位是秒。时间模块常用的方法当然是获取当前时间戳。print(time.time())的结果如下:1573054874.6483195这里没看懂。哇,让我先解释一下什么是时间戳。程序中一般以1970年1月1日0:00:00为开始时间,时间戳为从开始时间到现在的时长。在Python中,这个持续时间的单位是秒。那么为什么开始时间是1970年1月1日0:00:00呢?emmmmmmmmmmmmm,我真的不知道这个。按照我理解的语言,所有的时间戳都是从这个时间点开始计算的。顺手帮同学百度了一下,说没找到答案。不用担心这个问题,我们来看下一个。print(time.localtime())的结果如下:time.struct_time(tm_year=2019,tm_mon=11,tm_mday=6,tm_hour=23,tm_min=47,tm_sec=13,tm_wday=2,tm_yday=310,tm_isdst=0)该方法会给出详细的当前本地时间,可以细化为年、月、日、时、分、秒等。注意:此时间为当前本地计算时间。如果修改电脑时间,这个值也会随之改变。print(time.mktime(time.localtime()))的结果如下:1573055380.0看打印结果你应该猜到了。mktime()可以将当前本地时间转换为时间戳。不管是时间戳还是本地时间,都显得不方便。下面介绍一下如何格式化时间。最简单的方法,您可以使用函数asctime()。print(time.asctime(time.localtime()))结果如下:WedNov623:53:522019这个结果还是英文的,不符合国人的习惯。别担心,我们还可以自定义格式。print(time.strftime("%Y-%m-%d%H:%M:%S",time.localtime()))结果如下:2019-11-0623:55:56它看着舒服更重要的是,我们可以通过strftime()自定义日期格式。以下是日期格式符号:%y两位数年份(00-99)%Y四位数年份(000-9999)%m月份(01-12)%d日期(0-31)%H24小时格式小时(0-23)%I12小时格式小时(01-12)%M分钟(00=59)%S秒(00-59)%a本地简化星期名%A本地完整星期名%b本地简化月份名称%B本地完整月份名称%c本地对应日期表示和时间表示%j一年中的第几天(001-366)%p本地A.M.orP.M.'setc估值符号%U一年中的周数(00-53)星期日是星期的开始%w星期(0-6),星期日是星期的开始%W一年中的星期数(00-53)Mondayisthebeginningoftheweek%x对应的本地日期表示%X对应的本地时间表示%Z当前时区的名称%%%自己签名哇,这个太多了,我可以'不记得要做什么?其实不用记下来,只需要记住常用的就可以了,比如我上面用的年月日时分秒。其余不常用的,有需要的可以再查表。有时,我不使用破折号-来分隔时间,而是选择使用斜线/来分隔它们。我应该怎么办?这个很简单,看我的:print(time.strftime("%Y/%m/%d%H:%M:%S",time.localtime()))结果如下:2019/11/0700:02:18日历模块到此结束,顺便说一下另一个模块,日历。先看代码demo,这个比较有意思:importcalendarprint(calendar.calendar(theyear=2020,w=2,l=1,c=6))结果如下:2020JanuaryFebruaryMarchMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSu1234512167891011123456789234567813141516171819101112131415169910111213141520212223232426171819202316202122272829303030303031242426262626272727282929292929303031五月六月MoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSu1234512312345676789101112456789108910111213141314151617181911121314151616161616161616161616202120212222323242618192021222323232323232426272827282728293025312930JulyAugustSeptemberMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSu1234512123456678910111234567897891011121313141516171819101112131314151616161617161719202021222323242617181920212222232122232122232323242626262727282930312425262728293028293031十月十二月MoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSu1234112345656789101123456787891011121312131415161718910111213141514151617181920192021222324251617211922226203031232425262728292829303130我们打印出2020年的日历w=每个日期之间的空格字符数l=每周占用的行数c=后面的字符数每个月之间的间隔,我们可以使用这个功能来查看日历。我想给你用,反正我不用,我选择用这个:日历除了直接返回全年的日历,还支持返回指定月份的日历:print(calendar.month(2019,11))结果如下:November2019MoTuWeThFrSaSu123456789101112131415161718192021222324252627282930We也可以直接获取一个月的总天数:print(calendar.monthlen(2019,11))结果如下:30这个函数好像有点鸡肋。某月的天数不就是靠那首儿歌吗?一、三、五、七、八十、三十一从来都不坏。我们也可以知道指定日期对应的周数:print(calendar.weekday(2019,11,7))结果如下:3这个我觉得还是蛮实用的,不用再写算法来计算了你自己。示例代码本系列所有代码编辑器都会放在代码管理仓库Github和Gitee上,方便大家使用。示例代码-Github示例代码-Gitee如果我的文章对你有帮助,请扫码关注作者的公众号:获取最新干货推送:)