大家好,偷学Python系列是小甜同学从初学者的角度学习Python的笔记,其特点就是全文大多由新手易理解的代码与注释及动态演示刚入门的读者千万不要错过!

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


日期与时间


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

时间戳

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


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


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

"""
-*- coding:uft-8 -*-
author: 小甜
"""

import time
time_stamp = time.time()
print("当前的时间戳为:", time_stamp)  # 当前的时间戳为:1590585400.6808906

时间元组


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

序号属性
0tm_year2008
1tm_mon1 到 12
2tm_mday1 到 31
3tm_hour0 到 23
4tm_min0 到 59
5tm_sec0 到 61 (60或61 是闰秒)
6tm_wday0到6 (0是周一)
7tm_yday一年中的第几天,1 到 366
8tm_isdst是否为夏令时,值有:1(夏令时)、0(不是夏令时)、-1(未知),默认 -1

获取当前时间


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

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(),示例代码如下

"""
-*- 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)
%H24小时制小时数(0-23)
%I12小时制小时数(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。

示例代码

"""
-*- 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指秒数,表示进程挂起的时间。

示例代码

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日历模块,此模块中的函数都是日历相关的,例如打印某月的字符月历

示例代码

"""
-*- coding:uft-8 -*-
author: 小甜
time:2020/5/27
"""

import calendar
# 打印今年的年历
print(calendar.calendar(2020))
# 打印本月的月历
print(calendar.month(20205))
# monthrange方法
print(calendar.monthrange(20205))  # (4, 31)  # 5月份的第一天是周五一共31天,因为周一是0所以4是周五
# 计算1000年到2000年的闰年总数
print(calendar.leapdays(10002000))  # 242
# 判断今年是否为闰年
print(calendar.isleap(2020))  # True


©著作权归作者所有:来自51CTO博客作者mb5fe18e32e4691的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 技术解析:如何用pyecharts绘制时间轮播图
  2. PHP中date()函数输出的时间与Linux不一致怎么办?
  3. PHP常用日期时间操作合集
  4. PHP日期时间快速入门(图文详解)
  5. PHP如何计算两个时间段交集的天数?
  6. php时间戳转换成时间的方法
  7. 基于 Carbon 的时间穿梭 Travel 扩展包
  8. PHP时间戳和日期格式相互转换
  9. php中session时间设置浅析

随机推荐

  1. 分析Ajax爬取今日头条街拍美图
  2. Scrapy爬虫去重效率优化之Bloom Filter的
  3. 网络暴力有多可怕?
  4. P2P网贷信用评分项目分享(一)
  5. TensorFlow验证码识别
  6. 深度学习GPU环境Ubuntu16.04+GTX1080+CUD
  7. 如何删除 JavaScript 数组中的虚值[每日
  8. 10年漫威,到底有多少角色。
  9. Docker部署pinpoint2.2
  10. 中文分词原理及常用Python中文分词库介绍