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

人生苦短,我选Pythonpython

前文传送门git

小白学 Python(1):开篇github

小白学 Python(2):基础数据类型(上)算法

小白学 Python(3):基础数据类型(下)数据结构

小白学 Python(4):变量基础操做函数

小白学 Python(5):基础运算符(上)spa

小白学 Python(6):基础运算符(下)code

小白学 Python(7):基础流程控制(上)cdn

小白学 Python(8):基础流程控制(下)blog

小白学 Python(9):基础数据结构(列表)(上)

小白学 Python(10):基础数据结构(列表)(下)

小白学 Python(11):基础数据结构(元组)

小白学 Python(12):基础数据结构(字典)(上)

小白学 Python(13):基础数据结构(字典)(下)

小白学 Python(14):基础数据结构(集合)(上)

小白学 Python(15):基础数据结构(集合)(下)

小白学 Python(16):基础数据类型(函数)(上)

小白学 Python(17):基础数据类型(函数)(下)

小白学 Python(18):基础文件操做

小白学 Python(18):基础文件操做

小白学 Python(19):基础异常处理

小白学 Python(20):迭代器基础

小白学 Python(21):生成器基础

time 模块

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

import time复制代码

先来一个简单的样例吧:

for i in range(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()))复制代码

结果以下:

Wed Nov  6 23:53:52 2019复制代码

这个结果还带着英文,并不符合中国人的习惯嘛,别急,咱们还能够自定义格式。

print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))复制代码

结果以下:

2019-11-06 23: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/07 00:02:18复制代码

calendar 模块

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

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

import calendar

print(calendar.calendar(theyear=2020, w=2, l=1, c=6))复制代码

结果以下:

2020

      January                   February                   March
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
       1  2  3  4  5                      1  2                         1
 6  7  8  9 10 11 12       3  4  5  6  7  8  9       2  3  4  5  6  7  8
13 14 15 16 17 18 19      10 11 12 13 14 15 16       9 10 11 12 13 14 15
20 21 22 23 24 25 26      17 18 19 20 21 22 23      16 17 18 19 20 21 22
27 28 29 30 31            24 25 26 27 28 29         23 24 25 26 27 28 29
                                                    30 31

       April                      May                       June
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
       1  2  3  4  5                   1  2  3       1  2  3  4  5  6  7
 6  7  8  9 10 11 12       4  5  6  7  8  9 10       8  9 10 11 12 13 14
13 14 15 16 17 18 19      11 12 13 14 15 16 17      15 16 17 18 19 20 21
20 21 22 23 24 25 26      18 19 20 21 22 23 24      22 23 24 25 26 27 28
27 28 29 30               25 26 27 28 29 30 31      29 30

        July                     August                  September
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
       1  2  3  4  5                      1  2          1  2  3  4  5  6
 6  7  8  9 10 11 12       3  4  5  6  7  8  9       7  8  9 10 11 12 13
13 14 15 16 17 18 19      10 11 12 13 14 15 16      14 15 16 17 18 19 20
20 21 22 23 24 25 26      17 18 19 20 21 22 23      21 22 23 24 25 26 27
27 28 29 30 31            24 25 26 27 28 29 30      28 29 30
                          31

      October                   November                  December
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
          1  2  3  4                         1          1  2  3  4  5  6
 5  6  7  8  9 10 11       2  3  4  5  6  7  8       7  8  9 10 11 12 13
12 13 14 15 16 17 18       9 10 11 12 13 14 15      14 15 16 17 18 19 20
19 20 21 22 23 24 25      16 17 18 19 20 21 22      21 22 23 24 25 26 27
26 27 28 29 30 31         23 24 25 26 27 28 29      28 29 30 31
                          30
复制代码

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

  • w = 每一个日期之间的间隔字符数
  • l = 每周所占用的行数
  • c = 每月之间的间隔字符数

之后咱们看日历可使用这个函数看了。

要用大家用,反正我是不用,我选择使用这个:

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

print(calendar.month(2019, 11))复制代码

结果以下:

November 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复制代码

咱们还能够直接得到某月的总天数:

print(calendar.monthlen(2019, 11))复制代码

结果以下:

30复制代码

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

一三五七八十腊,三十一天永不差复制代码

咱们还能够知道指定的日期对应的星期数:

print(calendar.weekday(2019, 11, 7))复制代码

结果以下:

3复制代码

这个我以为蛮实用的,不再用本身写算法去推算了。

示例代码

本系列的全部代码小编都会放在代码管理仓库 Github 和 Gitee 上,方便你们取用。

示例代码-Github

示例代码-Gitee

若是个人文章对您有帮助,请扫码关注下做者的公众号:获取最新干货推送:)
相关文章
相关标签/搜索