当前位置: 首页 > news >正文

Python——time模块

python中有许多关于时间的模块,这里记录一下。

💦 基本概念

☁️ 时间戳

首先得介绍一下时间戳的概念:啥是时间戳呢?官方地讲,就是一个能表示一份数据再某个特定时间之前已经存在的、完整的、可验证的数据。那么通俗一点地讲,就是指格林尼治时间1970年01月01日00时00分00秒到现在的总秒数

☁️ 格式化符号

为了后面的理解,我们需要直到python中经常使用到的一些特殊的符号来格式化时间日期,类似于字符串格式化中的“ %s ”、“ %d ”等。

符号含义
%y两位数的年份表示(00~99)
%Y四位数的年份表示(0000~9999)
%m月份(01~12)
%d月内的一天
%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当前时区的名称

上面是否看得你眼花缭乱?没错,我也是
在这里插入图片描述
别急!下面还有一点点

☁️ 时间元组

python中很多函数用一个元组装起来的九组数字处理时间:

序号字段:值
04位数的年2022
11~12
21~31
3小时0~23
4分钟0~59
50~61
6一周的第几日0~6(0是周一)
7一年的第几日1~366(儒略历)
8夏令时-1,0,1(-1是决定是否为夏令时的旗帜)

上面的元组也就是time模块中的struct_time对象,这种结构具有如下属性:

序号属性
0tm_year2022
1tm_mon1~12
2tm_mday1~31
3tm_hour0~23
4tm_min0~59
5tm_sec0~61(60或61是闰秒)
6tm_wday0~6
7tm_yday1~366(儒略历)
8tm_isdst-1,0,1(夏时令)

害,这东西可是真多啊。啥又是儒略历,啥又是夏令时?对此我也是很费解啊,赶紧去百度了一下。
在这里插入图片描述
儒略历:就是公历的前身,一年被划分为12个月,大小月交替;四年一闰,平年365日,闰年366日为在当年二月底增加一闰日,年平均长度为365.25日。但是在实际使用过程中导致积累的误差随时间越来越大,就变成公历了~~

夏时令:这个就是人为地规定的为节约能源的制度。大概就是在夏季的时候,人为将时间提前一小时,减少照明量…我国以前也实行过,不过后来就取消了。

好了好了,科普结束,回到正题
在这里插入图片描述
首先要说明一点啊,日期和时间的区别啊,我现在的理解大概就是日期是年月日,时间呢就是时分秒,以前我老是分不清楚。

💦 time模块

time模块中呢,就主要介绍几个常用的函数。

☁️ time()

time函数用于返回当前时间的时间戳,没错,就是那个啥格林尼治时间到现在的秒数。记录一下现在的时间是2022.8.30 22:00,请看下面例子👇:

import time

a = time.time()
print(a)
#1661868092.4191587

可以看出,它返回的是一个浮点数

☁️ localtime()

该函数是将时间戳格式化为本地时间,返回struct_time对象。它有一个参数用于接收时间戳,如果调用函数时不提供时间戳(注意是提供秒数哦,很大的😑),它会默认使用当前时间戳。例如👇:

import time

a = time.localtime()
print(a)
#time.struct_time(tm_year=2022, tm_mon=8, tm_mday=30, tm_hour=22, tm_min=11, tm_sec=49, tm_wday=1, tm_yday=242, tm_isdst=0)
import time

a = time.localtime(0)
print(a)
#time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)

可以看到如果提供0的时间戳,它返回的就恰好是那个格林尼治时间。同时它返回的也是struct_time类型。

☁️ mktime()

它接收struct_time对象作为参数,它返回的是用秒数来表示时间的浮点数(该浮点数小数后面全是0,前面time.time()返回的浮点数小数后面就不全为0),就是从格林尼治时间到某年某月某日某时某分某秒的秒数。它的参数可以是结构化的时间。

import time

a = (2022,8,30,22,19,40,1,1,0)
print(time.mktime(a))
#1661869180.0
print(time.localtime(time.mktime(a)))
#time.struct_time(tm_year=2022, tm_mon=8, tm_mday=30, tm_hour=22, tm_min=19, tm_sec=40, tm_wday=1, tm_yday=242, tm_isdst=0)

可以看出,mktime函数可以用时间元组作为参数,也可以使用time_struct对象作为参数。

☁️ gmtime()

它能将一个时间戳转换为UTC的struct_time,参数为时间戳,默认参数为当前时间戳(也就是time.time())。那么,啥是UTC?科普时间到!

UTC,协调世界时,也叫世界标准时间,它是以原子时秒长在时刻上尽量接近于世界时的一种时间计量系统。具体的你们得就去问度娘了~~😊
例如👇:

import time

print(time.gmtime())
#time.struct_time(tm_year=2022, tm_mon=8, tm_mday=30, tm_hour=14, tm_min=34, tm_sec=26, tm_wday=1, tm_yday=242, tm_isdst=0)
print(time.gmtime(0))
#time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)

☁️ asctime()

它接收时间元组并返回一个形式为“ Tue Aug 30 22:36:35 2022 ”的24个字符的字符串(空格也要算)。它接收的参数可以是时间元组也可以是time_struct对象。例如👇:

import time

a = (2022,8,30,22,36,35,1,1,0)
print(time.asctime(a))
#Tue Aug 30 22:36:35 2022
print(time.asctime(time.localtime()))
#Tue Aug 30 22:39:44 2022

我是结合自身这边时间来做的哈。

☁️ ctime()

它能把一个时间戳转化为time.asctime()形式。参数为时间戳,默认为当前时间戳(也就是time.time()),它的作用相当于执行time.asctime(localtime())。(哎,不得不吐槽一句,这是真复杂啊)例如👇:

import time

print(time.ctime())
#Tue Aug 30 22:42:52 2022

☀️ sleep()

这个函数是重点啊,圈起来圈起来。

它用于推迟调用线程的运行,参数为秒数,表示进程挂起的时间。也就是我让你睡多久你就必须睡多久!例如👇:

import time

print("进程睡觉前:%s" % time.ctime())
time.sleep(5)
print("进程起床后:%s" % time.ctime())
#进程睡觉前:Tue Aug 30 22:47:35 2022
#进程起床后:Tue Aug 30 22:47:40 2022

☁️ strftime()

它有两个参数,一个是format格式化符号,另一个是就是时间元组,并返回以一个字符串表示的当地时间,格式由参数format决定,也就是前面的格式化符号。例如👇:

import time

a = (2022,8,30,23,3,11,1,1,0)
b = time.mktime(a)
print(time.strftime("%b %d %Y %H:%M:%S",time.gmtime(b)))
#Aug 30 2022 15:03:11

☁️ strptime()

根据指定的格式把一个时间字符串解析为时间元组(time_struct对象)。它有两个参数,一个是字符串,另一个是format格式化符号,例如👇:

import time

a = time.strptime("Aug 30 2022 23:06:54","%b %d %Y %H:%M:%S")
print(a)
#time.struct_time(tm_year=2022, tm_mon=8, tm_mday=30, tm_hour=23, tm_min=6, tm_sec=54, tm_wday=1, tm_yday=242, tm_isdst=-1)

time模块到这里就结束啦。不仅是自己复习一遍,也希望能对大家有所帮助。
在这里插入图片描述

相关文章:

  • 【深度学习】卷积神经网络的架构参考 以MNIST数据集为例(未调节架构)测试集正确率: 98.66%
  • C++ 哈希桶模拟实现(补充)
  • Rethinking the Inception Architecture for Computer Vision--Christian Szegedy
  • 安卓毕业设计成品基于Uniapp+SSM实现的智能课堂管理APP在线学习网
  • 基于metaRTC嵌入式webrtc的H265网页播放器实现(我与metaRTC的缘分)
  • 【设计模式】Java设计模式 - 组合模式
  • Android之Handler(上)
  • 网络协议:网络安全
  • php防止SQL注入的网上二手交易平台的设计与实现毕业设计-附源码241552
  • 美团笔试题目(Java后端5题2小时)
  • HTML期末大学生网页设计作业——奇恩动漫HTML (1页面) HTML CSS JS网页设计期末课程大作业
  • 浅谈如何学习网络编程
  • 【MYSQL】表的增删改查
  • 中国地板工具租赁服务行业竞争态势与经营效益预测报告2022-2028年
  • 查看docker 容器的端口
  • 【Leetcode】104. 二叉树的最大深度
  • iOS | NSProxy
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • Java 网络编程(2):UDP 的使用
  • JavaScript的使用你知道几种?(上)
  • learning koa2.x
  • Object.assign方法不能实现深复制
  • PHP那些事儿
  • Quartz初级教程
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • use Google search engine
  • 半理解系列--Promise的进化史
  • 闭包,sync使用细节
  • 订阅Forge Viewer所有的事件
  • 来,膜拜下android roadmap,强大的执行力
  • 嵌入式文件系统
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • # 数论-逆元
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #### go map 底层结构 ####
  • #预处理和函数的对比以及条件编译
  • (2020)Java后端开发----(面试题和笔试题)
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)EOS中账户、钱包和密钥的关系
  • (转)编辑寄语:因为爱心,所以美丽
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • **PHP分步表单提交思路(分页表单提交)
  • .apk文件,IIS不支持下载解决
  • .bat批处理出现中文乱码的情况
  • .gitignore文件---让git自动忽略指定文件
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .net中生成excel后调整宽度
  • //解决validator验证插件多个name相同只验证第一的问题
  • ??eclipse的安装配置问题!??