小白学 Python(22):time 和 calendar 模块简单使用
人生苦短,我选Python
前文传送门
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 上,方便大家取用。
小白学 Python(22):time 和 calendar 模块简单使用的更多相关文章
- 小白学 Python 爬虫(22):解析库 Beautiful Soup(下)
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- 小白学 Python(23):Excel 基础操作(上)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 小白学 Python(24):Excel 基础操作(下)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 小白学 Python 爬虫(31):自己构建一个简单的代理池
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- 小白学 Python 爬虫(33):爬虫框架 Scrapy 入门基础(一)
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- 小白学 Python(5):基础运算符(上)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 小白学 Python(13):基础数据结构(字典)(下)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 小白学 Python(18):基础文件操作
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 小白学 Python(20):迭代器基础
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
随机推荐
- 【NOIP模拟赛】小奇的矩阵
[题目背景] 小奇总是在数学课上思考奇怪的问题. [问题描述] 给定一个n*m的矩阵,矩阵中的每个元素aij为正整数. 接下来规定 1.合法的路径初始从矩阵左上角出发,每次只能向右或向下走,终点为右下 ...
- Python3 解决 ModuleNotFoundError: No module named 'pygal.i18n' 问题
在获取国别码集通过导入模块pygal报以下问题: from pygal.i18n import COUNTRIES 解决方法: 安装模块 pip3 install pygal_maps_world ...
- 从零开始的vue学习笔记(八)
前言 今天花一天时间阅读完Vue Router的官方文档的基础部分,简单的做一下总结和记录 Vue Router是什么 Vue Router 是 Vue.js 官方的路由管理器,用于构建单页应用(SP ...
- JS相关实训
今天又是无聊的一天,我的脑袋一直在嗡嗡叫,想着一些奇怪的问题,比如我为什么总是感到这么失落,为什么我喜欢的女孩不喜欢我呢,真是头大啊.不过既然有作业了我这个五好公民当然要认真写了.没时间让我思考这么复 ...
- Ubuntu安装scrcpy手机投屏和控制(Ubuntu用QQ微信的另一种方法)
Scrcpy 安装 snap install scrcpy adb服务安装 sudo apt-get install android-tools-adb adb配置 查看手机的USB识别号 手机通过U ...
- Qt5教程: (2) 信号与槽
1. 新建工程 新建一个"Qt Widgets Application"工程 2. 添加按钮 一个Qt工程会有很多个控件, 如果把逻辑代码都写在main函数里, main函数会非常 ...
- MySQL make_set()的用法
MAKE_SET(bits,str1,str2,…)返回一个设定值(含子字符串分隔字符串","字符),在设置位的相应位的字符串.str1对应于位0,str2到第1位,依此类推.在s ...
- 机器学习:不平衡信息有序平均加权最近邻算法IFROWANN
一 背景介绍 不平衡信息,特点是少数信息更珍贵,多数信息没有代表性.所以一般的分类算法会被多数信息影响,而忽略少数信息的重要性. 解决策略: 1.数据级别 (1)上采样:增加稀有类成本数 (2)下采样 ...
- Cocos2d-x 学习笔记(11.3) JumpBy JumpTo
1. JumpBy JumpTo JumpBy,边跳边平移,不只做垂直向上的抛物动作,同时还在向终点平移.JumpTo是JumpBy的子类. 1.1 成员变量 create方法 JumpBy: Vec ...
- Cocos2d-x 学习笔记(21.1) ScrollView “甩出”效果与 deaccelerateScrolling 方法
1. 简介 “甩出”效果是当我们快速拖动container并松开后,container继续朝原方向运动,但是渐渐减速直到停止的效果. ScrollView的onTouchEnded方法会设置Timer ...