首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >偷学Python第二十九|time模块和calendar模块详细用法

偷学Python第二十九|time模块和calendar模块详细用法

作者头像
刘早起
发布2020-06-11 10:34:39
发布2020-06-11 10:34:39
1.3K00
代码可运行
举报
文章被收录于专栏:早起Python早起Python
运行总次数:0
代码可运行

本文带来的是偷学Python第二十九天:Python中的日期和时间(time模块和calendar模块)详细用法,其他内容将在近期更新完毕,本文目录如下

日期与时间

在Python中对时间和日期的处理方式有很多,其中转换日期是最常见的一个功能。Python中的时间间隔是以秒为单位的浮点小数。

时间戳

Python中基本都是以时间戳来保存当前时间的。时间戳单位最适于做日期运算。但是1970年之前的日期就无法以此表示了。太遥远的日期也不行,UNIX和Windows只支持到2038年。

时间戳是指格林威治时间1970年01月01日00时00分00秒起至当下的总秒数。通俗的讲, 时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。它的提出主要是为用户提供一份电子证据, 以证明用户的某些数据的产生时间。

Python中使用time模块的time函数来获取当前的时间戳,示例代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
"""
-*- coding:uft-8 -*-
author: 小甜
"""
import time
time_stamp = time.time()
print("当前的时间戳为:", time_stamp)  # 当前的时间戳为:1590585400.6808906

时间元组

Python中的很多函数都是用一个元组装起来9组数字来处理时间,下表参考菜鸟教程

序号

属性

0

tm_year

2008

1

tm_mon

1 到 12

2

tm_mday

1 到 31

3

tm_hour

0 到 23

4

tm_min

0 到 59

5

tm_sec

0 到 61 (60或61 是闰秒)

6

tm_wday

0到6 (0是周一)

7

tm_yday

一年中的第几天,1 到 366

8

tm_isdst

是否为夏令时,值有:1(夏令时)、0(不是夏令时)、-1(未知),默认 -1

获取当前时间

从返回的时间戳转变为时间元组可以使用time模块的localtime()函数; time.gmtime([secs])也返回一个时间元组,示例代码如下

代码语言:javascript
代码运行次数:0
运行
复制
import time
time_stamp = time.time()  # 获取当前时间戳
localtime = time.localtime(time_stamp)
print(localtime)
# time.struct_time(tm_year=2020, tm_mon=5, tm_mday=27, tm_hour=21, tm_min=36, tm_sec=42, tm_wday=2, tm_yday=148, tm_isdst=0) 

格式化时间

可以使用time模块的asctime函数将时间元组格式化为最简单的可读模式,不给参数的话表示当前时间

time.ctime([secs])此参数接受时间戳为单位,返回日期的可读模式,不给参数相当于time.asctime(),示例代码如下

代码语言:javascript
代码运行次数:0
运行
复制
"""
-*- coding:uft-8 -*-
author: 小甜
time:2020/5/27
"""
import time
time_stamp = time.time()
localtime = time.asctime(time.localtime(time_stamp))
print("当前时间为:", localtime)  # 当前时间为:Wed May 27 21:47:48 2020

格式化日期

Python中的日期格式化符号:

符号

描述

%y

两位数的表示年份(00-99)

%Y

四位数的表示年份(0000-9999)

%m

月份(01-12)

%d

月内中的某一天(1-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

当前时区的名称

%%

%号本身

time.strftime(fmt[,tupletime])接收以时间元组,并返回以可读字符串表示的当地时间,格式由fmt决定。

time.strptime(str,fmt='%a %b %d %H:%M:%S %Y')根据fmt的格式把一个时间字符串解析为时间元组。

time mktime(结构化的时间或者完整的9位元组元素) 函数执行与gmtime(), localtime()相反的操作,它接收struct_time对象作为参数,返回用秒数来表示时间的浮点数。如果输入的值不是一个合法的时间,将触发 OverflowError 或 ValueError。

示例代码

代码语言:javascript
代码运行次数:0
运行
复制
"""
-*- coding:uft-8 -*-
author: 小甜
time:2020/5/27
"""
import time
time_stamp = time.time()
print(time_stamp)  # 1590590683.0062041
# 4位数的年份-月份-天数 24小时制:分钟:秒 周几 今年的第几天
localtime = time.strftime("%Y-%m-%d %H:%M:%S %A %j", time.localtime(time_stamp))
print(localtime)  # 2020-05-27 22:44:43 Wednesday 148
# 转变为时间元组
localtime_tuple = time.strptime(localtime, "%Y-%m-%d %H:%M:%S %A %j")
print(localtime_tuple)  # time.struct_time(tm_year=2020, tm_mon=5, tm_mday=27, tm_hour=22, tm_min=44, tm_sec=43, tm_wday=2, tm_yday=148, tm_isdst=-1)

# 将时间元组转换为秒(时间戳)
time_stamp = time.mktime(localtime_tuple)
print(time_stamp)  # 1590590683.0  # 与一开始获取的基本相等

获取CPU时间

time.perf_counter() 返回计时器的精准时间(系统的运行时间),包含整个系统的睡眠时间。由于返回值的基准点是未定义的,所以,只有连续调用的结果之间的差才是有效的。

time.process_time()返回当前进程执行 CPU 的时间总和,不包含睡眠时间。由于返回值的基准点是未定义的,所以,只有连续调用的结果之间的差才是有效的。

time.sleep() 函数推迟调用线程的运行,可通过参数secs指秒数,表示进程挂起的时间。

示例代码

代码语言:javascript
代码运行次数:0
运行
复制
import time
# 获取系统运行该函数的时间
print(time.perf_counter())  # 0.0208446
time.sleep(2)
# 读取系统运行该函数的时间,
print(time.perf_counter())  # 2.0208952  # 两者的差距微乎其微
# 获取当前进程执行 CPU 的时间总和
print(time.process_time())  # 0.015625  # 不包含睡眠时间

日历模块

Calendar日历模块,此模块中的函数都是日历相关的,例如打印某月的字符月历

示例代码

代码语言:javascript
代码运行次数:0
运行
复制
"""
-*- coding:uft-8 -*-
author: 小甜
time:2020/5/27
"""
import calendar
# 打印今年的年历
print(calendar.calendar(2020))
# 打印本月的月历
print(calendar.month(2020, 5))
# monthrange方法
print(calendar.monthrange(2020, 5))  # (4, 31)  # 5月份的第一天是周五一共31天,因为周一是0所以4是周五
# 计算1000年到2000年的闰年总数
print(calendar.leapdays(1000, 2000))  # 242
# 判断今年是否为闰年
print(calendar.isleap(2020))  # True

明日学习计划

今天学习了Python中的日期与时间,明天学习Python中的错误与异常。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 早起Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 日期与时间
  • 时间戳
  • 时间元组
  • 获取当前时间
  • 格式化时间
  • 格式化日期
  • 获取CPU时间
  • 日历模块
  • 明日学习计划
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档