人生苦短,我选Python

前文传送门

小白学 Python(1):开篇

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

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

小白学 Python(4):变量基础操作

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

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

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

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

小白学 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

小白学 Python(22):time 和 calendar 模块简单使用的更多相关文章

  1. 小白学 Python 爬虫(22):解析库 Beautiful Soup(下)

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  2. 小白学 Python(23):Excel 基础操作(上)

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  3. 小白学 Python(24):Excel 基础操作(下)

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  4. 小白学 Python 爬虫(31):自己构建一个简单的代理池

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  5. 小白学 Python 爬虫(33):爬虫框架 Scrapy 入门基础(一)

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

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

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

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

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  8. 小白学 Python(18):基础文件操作

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

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

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

随机推荐

  1. 常见的javascript跨站

    第一类: <img src=javascript:alert() /> <iframe src=javascript:alert()></iframe> <s ...

  2. SQL SERVER 还原误操作导致还原无法停止,处理办法

    昨天遇到运行库不知道单位哪个小伙子,把数据库还原了,导致单位业务全部瘫痪,主数据库一直显示正在还原,真的是不敢动,经过多方寻找,找到此脚本-------------------------数据库还原日 ...

  3. ubuntu下安装及配置git的方法

    安装Git 一个全新的ubunt系统,需要安装Git(系统是不具有该工具的),方法如下: 在terminel中输入如下命令: sudo apt-get install git git-core git ...

  4. SpringMVC快速入门记录(二)

    一.数组参数绑定和List参数绑定 1.数组参数绑定 提交多个相同name的参数,保持name的名字和Controller方法参数的数组名称相同即可. 2.List参数绑定 List中存放对象,并将定 ...

  5. JZ2440 u-boot-2016.11、linux-4.17和busybox-1.28.4移植笔记

    2018年5月份开始在JZ2440上陆续移植了u-boot-2016.11.u-boot-spl-2016.11.linux-4.17和busybox-1.28.4,其中linux-4.17和busy ...

  6. phpstudy后门rce批量利用脚本

    写两个 一个批量检测的  一个交互式shell的 暂时py  图形化的qt写出来..有点问题 后门包 : GET / HTTP/1.1Host: 127.0.0.1User-Agent: Mozill ...

  7. docker-以安装软件的方式介绍docker部分命令的使用

    [root@ipha-dev71- docker]# docker search python # 搜索镜像 [root@ipha-dev71- docker]# docker pull centos ...

  8. HTTP协议详解(二)—— HTTP响应

    HTTP响应(Response) 响应与请求一样分成三个部分:响应行.响应头.响应体. 1.响应行: 格式 - HTTP/1.1 200 OK 2.响应头: 部分头属性解释 - Location:这个 ...

  9. 小程序多端差异调研报告(微信,支付宝,头条,QQ)

    已经使用uni-app开发并发布了一个跨端小程序啦,嘻嘻嘻!

  10. 设计模式C++描述----19.命令(Command)模式

    一. 举例说明 我们知道,在多线程程序中,多个用户都给系统发 Read 和 Write 命令.这里有几点需要说明: 1. 首先明确一点,所有的这些 Read 和 Write 命令都是调用一个库函数. ...