日期与时间

在Python中,与时间处理有关的模块就包括:time,datetime以及calendar,这些都是Python内置的标准库/模块,我们可以去Python内置模块列表来具体了解每一个模块的功能以及包含哪些函数和对应的函数语法。

数据格式之元组Tuple

Python 的元组Tuple与列表List类似,不同之处在于元组的元素不能修改。元组使用小括号(),列表使用方括号[]。我们还是拿之前的案例,只是把方括号[]改成了小括号(),两者的数据格式不同,但是用法比较类似。

time模块

Python 的 time 模块里面就有很多函数可以转换常见日期格式。我们来看一下time模块里有哪些函数。

技术文档time模块

打印本地时间

使用VS Code新建一个lesson5文件夹,并在里面新建一个python文件比如lesson5.py,把下面的代码输入到文件里之后执行。

执行代码,打印出来的会是一个元组Tuple格式的数据,类似于下面这样:

 

格式化时间

但是元组格式的时间不适合我们人类阅读啊,这个时候我们就需要格式化时间啦~

要格式化时间就要用到time模块里的time.strftime()函数啦。time.strftime()函数接收时间元组,并返回一个可读字符串来表示当地时间,格式由参数format决定,这个有点类似于我们之前接触过的format()函数。

这里的%Y,%m,%d,%H,%M,%S是什么意思呢,大家可以执行上面的代码然后结合下面的格式化形式来理解:

我们也可以把时间格式化成我们比较习惯的时间:

格式化时间在Excel以及其他编程语言里都是必须要掌握的一个知识点,它们的计法也大致和上面一致。

windows电脑在执行这段代码时会报错,建议大家自行百度/Google找到解决方案,想一想应该搜索哪些关键词?右侧链接Python中文处理里有答案,可以先不急着看。

今天是一年的第几天,以及是星期几

前面有提到%j是返回一年过了多少天,而%w则返回这一天为星期几

数据类型之字典Dictionary

前面我们已经介绍了好几种数据类型啦,大家可以回顾一下,现在再介绍一个数据类型字典Dictionary。

还是结合我们之前的案例,最有钱的五家互联网公司我们用列表List数据结构可以显示出来,

但是如果我们要显示这五家公司所对应的市值呢,那就需要额外再=建一个列表List:

但是如果是使用字典,就不用那么麻烦,可以写成:

注意数据类型为字典Dictionary的写法,列表是由中括号[],元组是有小括号(),字典是由大括号{}给包围;列表、元组、字典里面的每个值都是由逗号,隔开;但是字典的每个值是一对,左边的称之为键key,右边的成为值value,键与值之间由冒号:隔开,大家注意这个的写法。

那这个字典Dictionary的用途在哪里呢?我们看一下下面的案例。

我们想知道Amazon公司对应的市值,直接通过key就能找到对应的值。

我们发现列表List、元组Tuple是通过位置来查找数据的,而字典Dictionary是通过键key来查找值value的。

今天是星期几

前面我们已经知道通过%w,我们可以打印出今天是星期几,但是打印出来的是阿拉伯数字,和我们平时的习惯不一样啊。不过我们却知道每个阿拉伯数字对应的意思,比如2对应着星期二,那么我们就可以使用字典Dictionary这个数据类型,把阿拉伯数字转换为对应的意思啦,我们来看案例:

 

打印时间戳

时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

大家会发现返回的是一个小数(浮点数),单位是秒。由于我们的时间在不断流动,因此大家每次执行这段代码,结果都会不一样。

datetime模块

Python的datetime模块也是用来处理时间的,不过很多人在使用datetime模块的时候,会有点迷糊,我们先来看下面的例子

技术文档datetime模块

打印今天的时间

from datetime import date,这个可以理解,意思就是查找datetime模块下的date类,并引入;那这个from datetime import datetime按理说也应该是查找datetime模块下的datetime类啊,怎么出现了两个datetime。嗯,是这样的,这是由于datetime模块就有一个和它同名的datetime类,因为名称相同所以很多人容易弄混。

那什么时候要用到from import呢?这个要看我们要调用的函数所处的位置,比如datetime.now()处于datetime模块下的datetime类之下。以前我们接触的函数在模块下的位置比较单一,所以没有from import,而datetime模块结构多了一些层级。

 

计算天数的时间间隔

我们想知道未来的某一天(比如你一个亲密朋友的生日)离今天还有多少天~可以输入一下以下代码并执行:

生日天数计算器:你的小猫咪出生日期是2018年2月12日,请问它出生多少天了?

calendar模块

Python的calendar模块主要是来处理与日历相关的函数,我们来看一下如何使用calendar模块打印日历。

技术文档calendar模块

日历打印:打印一下你出生那年那月的日历