这篇文章将为大家详细讲解有关Python中time模块和calendar模块是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

time 模块

今天我们要介绍的是一个会经常用到的模块—— time ,顾名思义,这是一个时间相关的模块。前面我们也介绍过常用模块,比如 os 模块,在使用这些模块前,我们需要先将它导入进来。 time 模块的导入方式如下:

importtime

先来一个简单的样例吧:

foriinrange(0,5):print(i)time.sleep(1)

打印结果我就不展示了,同学们应该都猜得到。那么 time.sleep(1) 这句话的作用是什么呢?

sleep() 方法是一个睡眠方法,意思就是程序执行到这里,需要等待一会,什么都不做,上面的代码在执行的时候可以发现,每隔 1s 会打印一个数字, sleep() 里面给出的参数是休眠的时间,单位是秒。

time 模块的常用方法

首当其冲当然是获取当前的时间戳。

print(time.time())

结果如下:

1573054874.6483195

这里就看不懂了哇,我先来解释下什么是时间戳。

在程序中,一般已1970年1月1日0时0分0秒作为起始时间,时间戳就是从起始时间到现在的时长,在 Python 中,这个时长的单位是秒。那么为什么起始时间是1970年1月1日0时0分0秒呢?

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)

%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 当前时区的名称

%% %号本身

哇,这也太多了,记不住怎么办?

其实这个并不需要你都记下来,只需要记住常用的就好了,就比如我上面使用的年、月、日、时、分、秒。其余的不常用的可以在有需要的时候再来查表。

有时候时间之间不使用短横杠 - 来隔开,而选择使用斜杠 / 隔开,这个怎么办?

这个很简单咯,看我的:

print(time.strftime("%Y/%m/%d%H:%M:%S",time.localtime()))

结果如下:

2019/11/0700:02:18

calendar 模块

都聊到这里了,我们顺便再聊一个模块,日历。

先看下代码演示吧,这个就比较有意思了:

importcalendarprint(calendar.calendar(theyear=2020,w=2,l=1,c=6))

结果如下:

2020JanuaryFebruaryMarchMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSu12345121678910111234567892345678131415161718191011121314151691011121314152021222324252617181920212223161718192021222728293031242526272829232425262728293031AprilMayJuneMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSu12345123123456767891011124567891089101112131413141516171819111213141516171516171819202120212223242526181920212223242223242526272827282930252627282930312930JulyAugustSeptemberMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSu1234512123456678910111234567897891011121313141516171819101112131415161415161718192020212223242526171819202122232122232425262727282930312425262728293028293031OctoberNovemberDecemberMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSu1234112345656789101123456787891011121312131415161718910111213141514151617181920192021222324251617181920212221222324252627262728293031232425262728292829303130

我们把 2020 年的日历打印出来了。

·w = 每个日期之间的间隔字符数

·l = 每周所占用的行数

·c = 每个月之间的间隔字符数

以后我们看日历可以使用这个函数看了。

要用你们用,反正我是不用,我选择使用这个:

除了直接返回全年的日历,calendar 还支持返回指定月份的日历:

print(calendar.month(2019,11))

结果如下:

November2019MoTuWeThFrSaSu123456789101112131415161718192021222324252627282930

我们还可以直接获得某月的总天数:

print(calendar.monthlen(2019,11))

结果如下:

30

这个功能好像有点鸡肋,我们获取某月的天数难道不是都靠那句儿歌么?

一三五七八十腊,三十一天永不差

我们还可以知道指定的日期对应的星期数:

print(calendar.weekday(2019,11,7))

结果如下:

3

这个我觉得蛮实用的,再也不用自己写算法去推算了。

关于Python中time模块和calendar模块是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。