python学习笔记——日期和时间

今天来学一下python对于时间的处理方法。
python提供了time和calendar两个模块来处理时间。
在python中,时间间隔是以秒为单位的浮点小数。
每个时间戳都是以距1970年1月1日午夜多长时间来记录的。

引入:time()的用法

time模块中有一个time函数可以用来获取上述所说的时间戳,我们举个例子:

import time
print(time.time())

运行结果是:1576309616.108583
当然了,你的运行结果和我肯定不一样。
这么个表示法其实也是有缺陷的,我们无法表示1970年以前的时间,而且也无法表示太遥远的未来,现在在Windows和unix上只可以表示到2038年(还有18年就到了)

时间元组

python中很多函数是把时间作为一个含有九个数字的元组进行处理的。
时间元组的结构如下:(最右边一列是举例说明。并不是真的值)
在这里插入图片描述

获取当前时间

我们上面说了时间戳,但是……那时间戳是人的读的吗?请问1972309616.108583是哪一年?
没错,你可以算,但这不是我们想要的,我们可以用一个更方便的方法去打印时间:

print(time.localtime(time.time()))

运行结果如下:
time.struct_time(tm_year=2019, tm_mon=12, tm_mday=14, tm_hour=15, tm_min=56, tm_sec=2, tm_wday=5, tm_yday=348, tm_isdst=0)

没错就是我运行这个语句的时间,相信这个比那一大串数据要清楚多了吧

获取格式化的时间

我都能猜到你会说什么:上面的那个时间虽然能看,但感觉还不是人看的呀?
别急,这就来解决这个问题,我们对获取的时间进行格式化,让它更像一个人读的时间。

简单的格式化

先看例子:

print(time.asctime(time.localtime(time.time())))

运行结果是:Sat Dec 14 16:07:08 2019
是不是很清晰了?终于像个人读的了。
这里我们用到了asctime()这个函数,这可以算作最简单的一个格式化时间的函数了,但正因为简单,功能也比较少,下面我们来看一下具有更多功能的格式化方方法。

格式化日期

这里我们用到了time模块的strftime()函数。
这个函数看名字就知道什么意思,strftime,string format time把时间格式化为一个字符串,可以这么理解(笑哭)
我们先展示一下用法:

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

输出的结果是:2019-12-14 16:14:00 2019
我们可以看出来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 当前时区的名称
%% %号本身

再补充一个函数,既然我们可以把时间戳格式化,那我们能不能把格式化的时间转换成时间戳呢?答案是肯定的:

a = "Sat Dec 14 16:26:24 2019"
print(time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y")))

运行结果是:1576311984.0

获取某月的日历

我们之前提到了python中还有另一个处理时间的模块——calendar,中文名:日历
所以我们自然地会想到用它获取某个月的日历:

import calendar
print(calendar.month(2019,12))

运行结果我就不放了,自己打开手机看一下日历就好。

time模块函数

下面我们列一个表格,展示一下time的其他函数:
在这里插入图片描述

以及,time里还有两个很重要的属性:
在这里插入图片描述

发布了231 篇原创文章 · 获赞 47 · 访问量 7万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章