IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 【Python案例】(二)时间模块:time、datetime、calendar -> 正文阅读

[Python知识库]【Python案例】(二)时间模块:time、datetime、calendar

一、Python中的时间表达

1. 时间模块的使用场景

对时间的处理可以归为以下3钟:

时间的显示:在屏幕显示,记录日志等”2022-04-07“

时间的转换:比如把字符串格式的日期转成Python中的日期类型

时间的运算:计算两个日期间的差值等

程序运行暂停秒数

Post请求需要上传时间戳:爬虫或者网页测试时,payload中有参数是时间戳(timestamp)格式。

2. 表达时间的方式

  1. 时间戳(timestamp),表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。点左侧的数字表示秒,右侧的数字表示秒之间的毫秒

    UTC(Universal Time Coordinated):协调世界时,又称世界统一时间、世界标准时间、国际协调时间。由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。(世界统一时间)

    DST(Daylight Saving Time)即夏令时

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XaZSAzcU-1649993133125)(D:\learning\自媒体发布内容\image-20220412093303121.png)]

    UTC和GMT的区别:

    1. Coordinated Universal Time 协调世界时。因为地球自转越来越慢,每年都会比前一年多出零点几秒,每隔几年协调世界时组织都会给世界时+1秒,让基于原子钟的世界时和基于天文学(人类感知)的格林尼治标准时间相差不至于太大。并将得到的时间称为UTC,这是现在使用的世界标准时间。

    2. GMT:Greenwich Mean Time 格林尼治标准时间。这是以英国格林尼治天文台观测结果得出的时间,这是英国格林尼治当地时间,这个地方的当地时间过去被当成世界标准的时间。

    3. 协调世界时不与任何地区位置相关,也不代表此刻某地的时间,所以在说明某地时间时要加上时区

      也就是说GMT并不等于UTC,而是等于UTC+0,只是格林尼治刚好在0时区上。GMT = UTC+0

    例子:

    北京时区是东八区,领先UTC八个小时,在电子邮件信头的Date域记为+0800。如果在电子邮件的信头中有这么一行:

    Date: Fri, 08 Nov 2002 09:42:22 +0800

    说明信件的发送地的地方时间是二OO二年十一月八号,星期五,早上九点四十二分(二十二秒),这个地方的本地时领先UTC八个小时(+0800, 就是东八区时间)。

    公式:UTC + (+0800) = 本地(北京)时间

  2. 格式化的事件字符串,”2022-04-11 17:34“

  3. 元组(struct_time)共九个元素。由于Python的time模块实现主要调用C库:time.struct_time(tm_year=2020, tm_mon=4, tm_mday=10, tm_hour=2, tm_min=53, tm_wday=2, tm_yday=100, tm_isdst=0)

索引(Index)属性(Attribute)值(Values)
0tm_year(年)2022
1tm_mon (月)1 - 12
2tm_mday (日)1 - 31
3tm_hour(时)0 - 23
4tm_min (分)0 - 59
5tm_sec (秒)0 - 59
6tm_wday (weekday)0 - 6(0表示周日)
7tm_yday (一年中的第几天)1 - 366
8tm_isdst (是否是夏令时)默认为-1

3.格式化日期

序号符号描述
1%y两位数的年份表示(00-99)
2%Y四位数的年份表示(0000-9999)
3%m月份(01-12)
4%d月中的一天(0-31)
5%H24小时制小时数(0-23)
6%l12小时制小时数(01-12)
7%M分钟数(00-59)
8%S秒(00-59)
9%a本地简化星期名称
10%A本地完整星期名称
11%b本地简化月份名称
12%B本地完整的月份名称
13%c本地相应的日期表示和时间表示
14%j年内的一天(001-366)
15%p本地AM或PM的等价符
16%U一年中的星期数(00-53),星期天为星期的开始
17%w星期(0-6),星期天为星期的开始
18%W一年中的星期数(00-53),星期一为星期的开始
19%x本地相应的日期表示
20%X本地相应的时间表示
21%Z当前时区的名称
22%%%号本身

?

二、time模块

2.1 time模块的常用方法

  • time.time(): 返回当前时间的时间戳。

  • time.localtime([secs]):将一个时间戳转换为当前时区的struct_time。若secs参数未提供,则以当前时间为准

  • time.gmtime([secs]):和localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。

  • time.mktime(t):将一个struct_time转化为时间戳。

  • time.sleep(secs):线程推迟指定的时间运行,单位为秒。

  • time.strftime(format[, t]):把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。

    >>> time.strftime("%Y-%m-%d %X", time.localtime()) # 时间转字符串
    '2022-04-12 10:26:26'
    
  • time.strptime(string, format):把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。

    >>> now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    >>> time.strptime(now, "%Y-%m-%d %H:%M:%S")
    time.struct_time(tm_year=2022, tm_mon=4, tm_mday=12, tm_hour=10, tm_min=35, tm_sec=46, tm_wday=1, tm_yday=102, tm_isdst=-1)
    

2.2 使用流程图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GJojygW4-1649993133133)(D:\learning\自媒体发布内容\time.jpg)]

三、datetime模块

datetime模块可以看做是对time模块的一个高级封装。time模块解决了时间的获取和表示,datetime模块则进一步解决了快速获取并操作时间中的年月日时分秒信息的能力。

3.1 datetime模块中的类:

  • datetime.date:表示日期的类,常用属性有year,month,day
  • datetime.time:表示时间的类。常用的属性有hour,minute,second,microsecond
  • datetime.datetime:表示日期时间
  • datetime.timedelta:表示时间间隔,即两个时间点之间的长度
  • datetime.tzinfo:与时区有关的相关信息。

3.2 常用方法

  1. d = datetime.datetime.now():返回当前的datetime日期类型

    >>> from datetime import datetime
    >>> d = datetime.now()
    >>> d.timetuple()
    1649898508.903568
    >>> d.today()
    datetime.datetime(2022, 4, 14, 9, 8, 52, 261922)
    >>> type(d.today())
    datetime.datetime
    >>> d.timetuple()
    time.struct_time(tm_year=2022, tm_mon=4, tm_mday=14, tm_hour=9, tm_min=9, tm_sec=42, tm_wday=3, tm_yday=104, tm_isdst=-1)
    >>> type(d.timetuple)
    builtin_function_or_method
    
    
  2. datetime.date.fromtimestamp(1341321):把一个时间戳转为datetime日期类型

  3. 时间运算datetime.timedelta()

import datetime
d =datetime.datetime.now()
d+ datetime.timedelta(-5,hours = 20)
  1. 时间替换datetime.timedelta()
>>> import datetime 
>>> d = datetime.datetime.now()
>>> print(d)
>>> print(d.replace(year=2120, month=8))
2022-04-15 10:31:32.374366
2120-08-15 10:31:32.374366

四、calendar模块

calendar模块是与日历相关的若干函数和类,可以生成文本形式的日历。

1.查询日历

1.1 日历文本

calendar.calendar(<年>,<列间隔>,<行间隔>): 返回日历(一年)的文本格式(行列间隔是指行列间的空格数

calendar.month(<年>,<月>,<列间隔>,<行间隔>): 返回日历(一个月)的文本格式

>>> import calendar 
>>> print(calendar.month(2022,4)) # 需要加print,如果不加print,jupter直接展示,显示内容是不规则的

     April 2022
Mo Tu We Th Fr Sa Su
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

>>> cd.month(2022,4)
'    April 2021\nMo Tu We Th Fr Sa Su\n             1  2  3\n 4  5  6  7  8  9 10\n11 12 13 14 15 16 17\n18 19 20 21 22 23 24\n25 26 27 28 29 30 31\n'

1.2 打印日历

calendar.prcal(<年>,<列间隔>,<行间隔>): 打印日历(一年)

calendar.prmonth(<年>,<月>,<列间隔>,<行间隔>):打印日历(一个月)

>>> import calendar as cd
>>> cd.prmonth(2021,10)
    October 2021
Mo Tu We Th Fr Sa Su
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

2.日历的计算

2.1 闰年相关细算

  1. 判断闰年:calendar.isleap(*<年>*)
  2. 判断两年之间有多少个闰年:calendar.leapdays(*<年1>*,*<年2>*)
>>> import calendar as cd
>>> cd.isleap(2000)
True
>>> cd.leapdays(1900,2000)
24

2.2 其他

calendar.monthrange(*<年>*,*<月>*): 返回该月的第一天是星期几和一共有多少天

calendar.weekday(*<年>*,*<月>*,*<日>*): 查询某日是星期几

calendar.monthcalendar(*<年>*,*<月>*): 日历列表化

#星期一是0
>>> import calendar as cd
>>> cd.monthrange(2021,10)  
(4, 31)
>>> cd.weekday(2021,10,1)
4
>>> cd.monthcalendar(2021,10)
[[0, 0, 0, 0, 1, 2, 3], [4, 5, 6, 7, 8, 9, 10], [11, 12, 13, 14, 15, 16, 17], [18, 19, 20, 21, 22, 23, 24], [25, 26, 27, 28, 29, 30, 31]]
编辑于 2021-12-28 23:38

参考资料:

  1. https://www.bilibili.com/video/BV1xh411i7Hn?p=6&spm_id_from=pageDriver

  2. 网络资料: https://zhuanlan.zhihu.com/p/427830785

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 17:36:49  更:2022-04-18 17:42:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 17:30:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码