python标准库time_Python 标准库之时间篇

写在之前

大家好,这是首发在我公众号「Python空间」的第 69 篇文章,欢迎关注,期待和你的交流。

在昨天的文章(Python 标准库之日期)中我们学习了 Python 标准库中「日期 & 时间」中的「日期」,本来想昨天一起写完的,鉴于内容太多怕学起来厌烦了,所以把剩下的「时间」放到今天来学。

「时间」这一部分的话,主要就是标准库中的两个:time 和 datetime。下面我们依次来看。

time

time 模块是我们很常用的一个模块,比如我们需要记录某个程序运行的时间长短等,下面容我一一介绍其中的方法。

1.time()

>>> import time

>>> time.time()

1536827514.095

time.time() 是获得当前的时间(严格点说是时间戳),只不过这个时间相当不友好,它是以 1970 年 1 月 1 日 0 时 0 分 0 秒为起点,到当前的时间长度。

当然,我们还是有友好的时间显示的,请接着往下看。

2.localtime()

>>> time.localtime()

time.struct_time(tm_year=2018, tm_mon=9, tm_mday=13, tm_hour=16, tm_min=37, tm_sec=48, tm_wday=3, tm_yday=256, tm_isdst=0)

这个就友好很多了,得到的结果我们可以称之为时间元祖(也有括号),它们的索引分别是从 0 到 8,代表的含义依次是:年,月,日,时,分,秒,一周中的第几天,一年中的第几天,夏令时。

>>> t = time.localtime()

>>> t[1]

9

通过索引能够得到相应的属性,上面的例子中就得到了当前时间的月份。

3.asctime()

>>> time.asctime()

'Thu Sep 13 16:47:57 2018'

time.asctime() 的参数为空时,默认的设置是 time.localtime() 的值为参数,所以得到的是当前日期,时间和星期。当然,我们也可以自己设置参数。

>>> h = time.localtime(1000000)

>>> h

time.struct_time(tm_year=1970, tm_mon=1, tm_mday=12, tm_hour=21, tm_min=46, tm_sec=40, tm_wday=0, tm_yday=12, tm_isdst=0)

>>> time.asctime(h)

'Mon Jan 12 21:46:40 1970'

注意,time.asctime() 的参数必须是时间元组,类似上面的那种。

4.mktime()

mktime() 也是以时间元组为参数,但是它返回的不是可读性更好的那种样式,而是下面这种形式的:

>>> lt = time.localtime()

>>> lt

time.struct_time(tm_year=2018, tm_mon=9, tm_mday=13, tm_hour=17, tm_min=28, tm_sec=2, tm_wday=3, tm_yday=256, tm_isdst=0)

>>> time.mktime(lt)

1536830882.0

返回了时间戳,类似于 localtime() 的逆程序(localtime() 以时间戳为参数)。

好像到了这里还缺点什么,在编程中用的比较多的是“字符串”,似乎还没有将时间转化为字符串的函数,这个应该有,继续往下看。

5.strftime()

这个的函数格式稍微复杂一点:

>>> help(time.strftime)

Help on built-in function strftime in module time:

strftime(...)

strftime(format[, tuple]) -> string

将时间元组按照指定格式要求转化为字符串,如果不指定的话就默认为 localtime() 值。之所以说它复杂,是在于其 format,需要用到以下所示的东西:

简单的举个例子,请看下面:

>>> time.strftime("%y,%m,%d")

'18,09,13'

>>> time.strftime("%y/%m/%d")

'18/09/13'

分隔符可以由我们自由指定,既然已经变成了字符串,那么就可以“随心所欲”的玩啦。

datetime

虽然 time 模块已经能把有关时间方面的东西搞定了,但是在实际业务中其实还有更多复杂的要求,呼唤着更多的专有工具,这些专有工具将复杂的业务封装,让我们使用起来更简单,比如我们现在要学的 datetime 就是其中之一。

datetime 主要有这么几个类:date(日期类),time(时间类),datetime(日期时间类),timedelta(时间间隔),tzinfo(时区类)。下面我挑前几个常用的给大家说一下。

1.date 类

下面让我们通过实例来了解一下常用的属性:

>>> import datetime

>>> today = datetime.date.today()

>>> today

datetime.date(2018, 9, 13)

上面生成的是一个日期对象,然后操作这个对象的各种属性,可以用 print 语句,以获得更佳的视觉效果:

>>> print(today)

2018-09-13

>>> print(today.ctime())

Thu Sep 13 00:00:00 2018

这里需要注意的是,如果用 datetime.date.year() 的话会报错,因为 year 不是一个方法,必须像下面这样才可以:

>>> print(today.year)

2018

>>> print(today.month)

9

>>> print(today.day)

13

当然还有一些诸如时间戳与时间格式化的转换,修改日期等,有兴趣的可以去查一下,没兴趣的等碰到再说好了。

2.time 类

time 类也要生成 time 对象:

>>> t = datetime.time(1,2,3)

>>> print(t)

01:02:03

time 类的常用属性如下所示:

>>> print(t.hour)

1

>>> print(t.minute)

2

>>> print(t.second)

3

>>> t.microsecond

0

3.timedelta 类

timedelta 类主要用来做时间的运算,比如像下面这样:

>>> now = datetime.datetime.now()

>>> print(now)

2018-09-13 22:06:47.738903

在这里我没有讲 datetime 类,因为有了 date 和 time 类的知识以后,这个类变得非常简单。下面我们来继续上面的例子进行操作:

>>> b = now + datetime.timedelta(hours = 5)

>>> print(b)

2018-09-14 03:10:45.656367

上述代码是对 now 增加了 5 个小时,下面我们继续来操作增加两周:

>>> c = now + datetime.timedelta(weeks = 2)

>>> print(c)

2018-09-27 22:10:45.656367

最后我们来计算一下时间差:

>>> d = c - b

>>> print(d)

13 days, 19:00:00

写在之后

那么到这,Python 标准库之日期 & 时间 算是结束了,这两部分的内容其实比较多,难倒是不难,就是需要记得东西比较多。我们都知道「好记性不如烂笔头」的道理,在编程上,也是一个道理,只不过要改成「好记性不如多敲码」,希望你还是要多多练习。

还是老话,如果你觉得本篇文章对你有帮助的话,请点个赞再走,谢谢。

b5ce94f73b617783938af0c75c1e12aad7332749.jpg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311834.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《ASP.NET Core 微服务实战》-- 读书笔记(第12章)

第 12 章 设计汇总微服务开发并不是要学习 C#、Java 或者 Go 编程--而是要学习如何开发应用以适应并充分利用弹性伸缩环境的优势,它们对托管环境没有偏好,并能瞬间启停换句话说,我们要学习如何开发云原生应用识别并解决反模式我们既然已经学习…

[蓝桥杯2017初赛]纸牌三角形-枚举permutation+数论

题目描述 A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算)。要求每个边的和相等。 下图就是一种排法这样的排法可能会有很多。 如果考虑旋转、镜像后相同的算同一种,一共有多少种不同的排法呢? 输出 输出一个整数表示答…

算法----最大承载量下的最大价值问题

算法----最大承载量下的最大价值问题 代码&#xff1a; 栈代码&#xff1a;&#xff08;存储哪些是需要的价值物&#xff09; #pragma once #include<stdio.h> #define maxSize 100 typedef struct stack {int * base;int * top; }stack; bool init(stack & Stack…

oracle多条件分组统计_多条件统计,就必须用Ifs系列函数,绝对的高能!

数据统计&#xff0c;我们并不陌生&#xff0c;但是在实际的工作或应用中&#xff0c;数据统计都是附加条件的&#xff0c;而且大多情况下是“多条件”的&#xff0c;此时&#xff0c;我们必须掌握“Ifs”系列函数。一、多条件判断&#xff1a;Ifs函数。功能&#xff1a;判断指…

AcWing 895. 最长上升子序列

给定一个长度为N的数列&#xff0c;求数值严格单调递增的子序列的长度最长是多少。 输入格式 第一行包含整数N。 第二行包含N个整数&#xff0c;表示完整序列。 输出格式 输出一个整数&#xff0c;表示最大长度。 数据范围 1≤N≤1000&#xff0c; −10^9≤数列中的数≤ 10…

word List18

word List18 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

AcWing 1015. 摘花生

Hello Kitty想摘点花生送给她喜欢的米老鼠。 她来到一片有网格状道路的矩形花生地(如下图)&#xff0c;从西北角进去&#xff0c;东南角出来。 地里每个道路的交叉点上都有种着一株花生苗&#xff0c;上面有若干颗花生&#xff0c;经过一株花生苗就能摘走该它上面所有的花生。…

干货,不小心执行了rm -f,除了跑路,如何恢复?

作者&#xff1a;justmine头条号&#xff1a;大数据与云原生微信公众号&#xff1a;大数据与云原生创作不易&#xff0c;在满足创作共用版权协议的基础上可以转载&#xff0c;但请以超链接形式注明出处。为了方便阅读&#xff0c;微信公众号已按分类排版&#xff0c;后续的文章…

数据结构----二叉树叶子结点到根节点的高度计算

数据结构----二叉树叶子结点到根节点的高度计算 代码&#xff1a; #include<stdio.h> #include<stdlib.h> typedef struct bstTree {int data;struct bstTree* lchild, *rchild; }bstTree; void createBSTTree(bstTree* & T, int data) {//创建二叉排序树bst…

nginx 带宽_前端工程师不可不知的Nginx知识

历史背景互联网的全球化导致了互联网的数据量快速增长&#xff0c;加上在本世纪初摩尔定律在单核 CPU 上的失效&#xff0c;CPU 朝着多核方向发展&#xff0c;而 Apache 显然并没有做好多核架构的准备&#xff0c;它的一个进程同一时间只能处理一个连接&#xff0c;处理完一个请…

网格路径最小数字和

给定一个包含非负整数的 m x n 网格&#xff0c;请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 说明&#xff1a;每次只能向下或者向右移动一步。 数据范围&#xff1a; n < 100,m < 100; 输入&#xff1a; 3 3 1 3 1 1 5 1 4 2 1 输出&a…

word List 19

word List 19 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

矩形法_字体设计 | 新手必学,超简单的矩形造字法!!

点击蓝字关注&#xff0c;创智助你长姿势作为一个刚刚踏入设计界的“萌新”来说&#xff0c;字体设计可能是除了版式设计之外最简单的功课了&#xff0c;那么今天教学内容就是最简单的字体设计&#xff1a;矩形造字法。矩形造字法是以软件中的“矩形工具”为基础&#xff0c;以…

NETCore Bootstrap Admin 通用后台管理权限 [1]: 前后台分离系统简介

前言从事软件开发这个行业现在已经有十几年了&#xff0c;项目无论大小权限认证、授权模块总是或多或少有功能需求的&#xff0c;这一块费时费力但是又存在于后台&#xff0c;使用最多的可能是运维人员所以处于出力不讨好的尴尬地位&#xff0c;每次有新的项目总是要耗费不少时…

不同路径 I

一个机器人位于一个 n * m 网格的左上角 &#xff08;起始点在下图中标记为“Start” &#xff09;。(n表示行&#xff0c;m表示列) 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为“Finish”&#xff09;。 问总共有多少条不同…

数据结构---前序和中序遍历的二叉树序列还原二叉树

数据结构—前序和中序遍历的二叉树序列还原二叉树 代码&#xff1a; #include<stdio.h> #include<stdlib.h> typedef struct bstTree {char data;struct bstTree* lchild, *rchild; }bstTree; bstTree * reStoreTree(char* pre, int preSt, int preEnd, char *mi…

c++ 位运算_C语言之运算符

运算符代表的是各种各样的运算(操作)已知的运算符&#xff1a; - * / (赋值)1.运算符的分类运算符的分类方法很多&#xff0c;通常用功能或者操作数个数进行分类功能&#xff1a;算数运算符 逻辑运算符 位运算符 地址运算符.......操作数个数&#xff1a;单目运算符 双目运算符…

微软 PowerBI 被评为商业智能领导者-13年的企业产品奋斗史解读

恭喜微软连续 13 年被Gartner评为BI平台领导者。您可以插上耳机&#xff0c;打开音乐来一起欣赏这个过程。原文地址&#xff1a;https://powerbi.microsoft.com/zh-cn/blog/microsoft-named-a-leader-in-gartners-2020-magic-quadrant-for-analytics-and-bi-platforms/被评为第…

word List20

word List20 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

[python交互]Excel催化剂与python交互原理剖析,py开发者按此规范可自行扩展功能...

只需简单地编写小段py脚本&#xff0c;就可以借助Excel催化剂的平台作用&#xff0c;将写出的py脚本&#xff0c;嫁接到Excel的环境上使用&#xff0c;在Excel的广阔用户群体上带来更多的产出价值。也大大增加了将自己的python技能输出到普通用户可享用的层面。按照本文的规范&…