python内置模块time详解(我们需要了解的多种时间格式)

Python的time模块提供了各种与时间相关的函数。我们可以获取当前时间、操作时间日期、计算两个时间差等。

时间有两种标准表示法:

  • 数字表示: 整数或浮点数,通常是自从1970年1月1日以来的秒数。
  • 9个整数组成的元组:元组项包含年份,月份,天,小时,分钟,秒,星期,一年中的第几天,夏令时标志。

使用time模块

要使用 time模块,直接导入它即可。

import time

以下是time模块提供的主要功能函数

获取数字表示法的函数

1. time()

不带参数,返回时间浮点数,时间是自1970年1月1日以来的秒数。

测试代码:

print(time.time())

执行后结果:

1725070125.995992

2. time_ns()

不带参数,返回时间整数,时间是自1970年1月1日以来的纳秒数。(1秒=10的9 次方纳秒)

测试代码:

print(time.time_ns())

执行后结果:

1725070125995997000

我们除以10的9次方得到的结果就是秒。

还有其他一些函数monotonic(),perf_counter(),process_time(),thread_time()也会返回数字时间,平常不太常用,不过多介绍。

计算时间之差

以上time() 和time_ns函数返回的是浮点数或者整数,所以可以用于计算时间之差。

举例:打印执行代码前和代码后的时间,并计算时间之差。

now_time = time.time()
print(f'当前时间:{now_time}')#执行代码sleep 5s
time.sleep(5)after_time = time.time()
print(f'等待以后:{after_time}')print(f'时间之差:{after_time - now_time}')

结果:

当前时间:1725097798.896244
等待以后:1725097803.901393
时间之差:5.005148887634277

获取元组表示法的函数

3 gmtime(seconds=None)

返回的是UTC时间的元组(中国位于8时区,UTC时间是比当前时间往前8个小时的时间。)

该函数返回的是time.struct_time类对应的时间元组,struct_time类代码如下:

关于参数:

  • 不传seconds秒数,获取的是当前时间对应UTC的时间元组。
  • 传seconds秒数,获取的是从1970年1月1日以来加上传的秒数对应的时间元组。

测试代码:

#打印当前UTC时间
print(time.gmtime())

结果:

time.struct_time(tm_year=2024, tm_mon=8, tm_mday=31, tm_hour=3, tm_min=10, tm_sec=27, tm_wday=5, tm_yday=244, tm_isdst=0)

#打印1970年1月1日以来加上36000秒的时间(10个小时)

print(time.gmtime(36000))

结果:

time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=10, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)

4 localtime(seconds=None)

返回的是当前时间的元组。等价于gmtime函数获取的时间加上所在时区,使用方法和gmtime函数一致。

关于参数:

  • 不传seconds秒数,获取的是当前时间元组。
  • 传seconds秒数,获取的是从1970年1月1日以来加上传的秒数对应的时间元组。

测试代码:

#打印当前时间

print(time.localtime())

结果:

time.struct_time(tm_year=2024, tm_mon=8, tm_mday=31, tm_hour=11, tm_min=34, tm_sec=10, tm_wday=5, tm_yday=244, tm_isdst=0)

#打印1970年1月1日以来加上36000秒的时间(10个小时)

print(time.localtime(36000))

结果:区别是小时数加上了时区

time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=18, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)

将时间转换为可读性强的函数

5 asctime(p_tuple=None)

asctime()函数将struct_time元组对象转换为一个可读的、24小时制的时间字符串。这个字符串的格式是固定的,类似于'Sun Jun 20 09:21:05 2024'。

关于参数:

  • 不传p_tuple,获取的是当前时间。
  • 传p_tuple,获取的是对应p_tuple时间元组转换后的时间。

测试代码:

#打印当前时间

print(time.asctime())

结果:Sat Aug 31 12:35:05 2024

#打印传入时间localtime函数获取的时间元组转换后的时间

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

结果:Mon Feb 22 00:00:00 1971

6 ctime(seconds=None)

ctime()函数将传入的时间戳秒数转换为一个可读的、24小时制的时间字符串。这个字符串的格式是固定的,类似于'Sun Jun 20 09:21:05 2024'。

关于参数:

  • 不传seconds秒数,获取的是当前时间。
  • 传seconds秒数,获取的是对应seconds秒数转换后的时间。

测试代码:

#打印当前时间

print(time.ctime())

结果:Sat Aug 31 12:35:05 2024

#打印传入时间localtime函数获取的时间元组转换后的时间

print(time.ctime(36000000))

结果:Mon Feb 22 00:00:00 1971

转为时间戳的函数

7 mktime(p_tuple=None)

mktime()函数必须传一个p_tuple时间元组,将struct_time元组对象转换为时间戳(时间戳为自1970年1月1日以来的秒数),

关于参数:

参数可以是time.gmtime()或者time.localtiime()获取到的时间元组。

测试代码:

#打印传入时间localtime函数获取的时间元组转换后的时间戳

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

结果:1725082686.0

时间格式化-将时间元组转为一定格式的字符串

8 strftime(format,p_tuple=None)

strftime()函数必须传一个p_tuple时间元组,将struct_time元组对象转换为时间戳(时间戳为自1970年1月1日以来的秒数)。

参数:

  • format:传入如下时间格式组成的字符串。

%Y:年份,比如2024

%m:月份,比如01,02,直到12

%d:天数,比如一个月中的第1天,第2天,直到第31天

%H:小时,为24小时制,比如从00,01直到23

%M:分钟,比如从00,01直到59

%S:秒数,比如从00,01直到59

%z: UTC时区偏移

%a :缩写的星期几,比如Sat代表星期六

%L:完整的星期几,比如Staturday代表星期六

%b:缩写的月份,比如Aug代表8月份

%B :完整的月份,比如August代表8月份

%c:按照一定格式展示,比如Sat Aug 31 14:01:17 2024

%I:小时,为12进制。比如01,02,直到12

%p: AM或PM

  • p_tuple:传入时间元组,将时间元组按照format格式转为我们想要的时间格式。如果不传,默认使用localtime函数获取的当前时间元组。

测试代码:

print(time.strftime('%Y%m%d%H%M%S'))
结果:20240831140117
print(time.strftime('%Y-%m-%d-%H-%M-%S'))
结果:2024-08-31-14-01-17
print(time.strftime('%Y-%m-%d,%H-%M-%S,%a,%A,%b,%B,%c,%l,%p'))
结果:2024-08-31,14-01-17,Sat,Saturday,Aug,August,Sat Aug 31 14:01:17 2024, 2,PM

时间格式化-将时间字符串转为时间元组

9 strptime(string,format)

strptime()函数将时间字符串按照格式转为时间元组。

format参数的使用如strftime函数中的介绍。

string参数传入的是时间字符串,同样跟strftime函数返回的字符串一样。

要注意:format格式和string的格式要一致,否则报错。

比如时间字符串’20240831173340’对应的格式’%Y%m%d%H%M%S’,时间字符串’2024-08-31-17-33-40’对应的格式’%Y-%m-%d-%H-%M-%S’

测试代码:

print(time.strptime('20240831173340','%Y%m%d%H%M%S'))
结果:
time.struct_time(tm_year=2024, tm_mon=8, tm_mday=31, tm_hour=17, tm_min=33,tm_sec=40, tm_wday=5, tm_yday=244, tm_isdst=-1)

print(time.strptime(time.strftime('%Y-%m-%d,%H-%M-%S,%a,%b'),'%Y-%m-%d,%H-%M-%S,%a,%b'))
结果:
time.struct_time(tm_year=2024, tm_mon=8, tm_mday=31, tm_hour=17, tm_min=36, tm_sec=28, tm_wday=5, tm_yday=244, tm_isdst=-1)

sleep等待

10 sleep(seconds)

是非常常用的函数,表示等待给定的秒数,再继续执行后续代码。可传入整数或者浮点数的秒数。比如sleep(5.5)表示等待5.5s。

测试代码:

print(f'当前时间:{time.asctime()}')
time.sleep(5)
print(f'等待以后:{time.asctime()}')结果:时间等待5s才执行后续代码。
当前时间:Sat Aug 31 17:44:13 2024
等待以后:Sat Aug 31 17:44:18 2024

共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”

-----指水滴不断地滴,可以滴穿石头;

-----比喻坚持不懈,集细微的力量也能成就难能的功劳。

----感谢读者的阅读和学习,谢谢大家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/414037.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Diffusion 模型生成图片太慢了?用 AE(AutoEncoder) 和 VAE 加速一波!

Diffusion 模型生成图片太慢了?用 AE(AutoEncoder) 和 VAE(Variational AutoEncoder) 压缩图片加速一波! 本文分为两个部分:理论学习和代码实践。 先预览一下 AE 和 VAE 模型的效果: 理论学习 本文价值 Diffusion 模型生成图片的效…

图像识别智能垃圾桶项目开发--语音命令识别垃圾

一、项目思维导图 二、语音模块配置信息 三、项目程序 main.c garbage.c garbage.h uartTool.c //串口发送数据 uartTool.h

台式机CPU温度90℃以上-排查思路

虽然现在台式机不值钱。 但是对于穷苦老百姓来说,还是害怕它坏掉,坏掉就又需要花钱买了。 ①风扇清理所有灰尘(风扇的散热网是可以拆下来的), 主板清理所有灰尘(用画笔或者干燥的牙刷,注意是…

编程效率进阶:打造你专属的 Git 别名与 PyCharm 完美结合

在日常开发中,Git 是我们不可或缺的工具。掌握常用 Git 命令可以帮助我们更高效地进行版本控制,但随着命令的复杂性增加,记住所有命令变得困难。这时,Git 别名的设置就显得尤为重要。此外,许多开发者使用 PyCharm 作为…

TypeScript与vue

一、为组件的props标注类型 - 在没有使用TS之前,是这样接受props: - 在TS环境中,是这样接受props: - 对于props的可选项如何限制呢? 1、类型限制 类型限制在接收的时候就已经定义好了 2、可选属性(必填限制…

c# net8调用vc写的dll

dll程序(vc,x86) 头文件 extern "C" int __declspec(dllexport) WINAPI add(int a, int b);实现 int WINAPI add(int a, int b) {return a b; }c#/net8 函数声明: [DllImport("dll/Dll1.dll", CallingConvention CallingCo…

c++中的匿名对象及内存管理及模版初阶

目录 c中的匿名对象 日期到天数的转换 深入理解析构 深入理解拷贝构造 内存管理 全局变量和static变量的区别; malloc/calloc/realloc的区别 new和delete的意义? operator new与operator delete函数 对比malloc和new operator 定制operator ne…

switch语句和while循环

switch语句和while循环 switch语句break的用法default的用法switch语句中的case和default的顺序问题 while语句while语句的执行流程while语句的具体例子 switch语句 switch 语句是⼀种特殊形式的 if…else 结构,用于判断条件有多个结果的情况。它把多重 的 else if…

Markdown语法与Latex公式汇总

1 基本语法 1.1 标题 语法如下: 效果如下: 1.2 字体样式 语法效果普通正文字体普通正文字体*倾斜字体*倾斜字体**加粗字体**加粗字体***倾斜加粗字体***倾斜字体~~划线字体~~倾斜字体 1.3 分割线 语法如下: 效果如下: …

鸿蒙项目签名配置

配置需要以下四个文件: 1. p12文件 2. csr文件 3. cer文件 打开AGC平台 点击申请调试证书 4. p7b文件 最后在项目中进行配置 配置项目的module.json5中

NASAVIIRS数据下载

目录 Visible Infrared Imaging Radiometer Suite(VIIRS)NOAA 数据下载用户注册 数据查找1.选择产品类型2. 数据索引3. 提交订单 Visible Infrared Imaging Radiometer Suite(VIIRS) 来自 Suomi NPP 的可见光红外成像辐射计套件 …

学习如何更好向GPT提问

如今以chatgpt为首的各种语言大模型应运而出,已经逐渐应用到平时的工作和学习中,但就算是使用同一种大模型提问同一个问题也有不同的答案,如何更快更好的获取优质答案是应该关心和学习的重点。 本文在《成为提问工程师》书的基础上加以整理总…

【Python系列】 Python 中的枚举使用

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

求解组合优化问题的具有递归特征的无监督图神经网络

文章目录 ABSTRACT1 Introduction2 Related Work3 QRF-GNN方法4 数值实验4.1 MAX-CUT4.2 COLORING5 conclusionABSTRACT 介绍了一种名为QRF-GNN的新型算法,有效解决具有二次无约束二进制优化(QUBO)表述的组合问题。依赖无监督学习,从最小化的QUBO放松导出的损失函数。该架构…

【软件工程】软件生命周期(生存周期)

考点3 软件生命周期(生存周期) 一、定义 软件产品或软件系统从设计、投入使用到被淘汰的全过程。 二、3周期 题目 一、判断题 二、选择题

mac电脑里面的 磁盘分区,容器,宗卷,宗卷组的理解和使用

在mac电脑里面我们一般都是使用宗卷,他和我们常见的pc机器硬盘的分区是有区别的。 对于物理硬盘来说 不管是分区还是宗卷,他们都是逻辑上面的概念。 分区 mac电脑里面的分区 和 pc电脑中的分区差不多, 他们都是针对的物理硬盘,…

Linux系列之基础篇

文章目录 开篇明义基础篇实际操作篇高级篇Linux之JavaEELinux在哪些地方使用Linux应用领域 Linux入门基本介绍Linux和Unix关系 VM和Linux的安装基本说明安装VM17.5安装Centos7.6网络连接解释 虚拟机克隆虚拟机快照虚拟机迁移和删除安装vmtools设置共享文件夹 Linux目录结构 开篇…

144. 腾讯云Redis数据库

文章目录 一、Redis 的主要功能特性二、Redis 的典型应用场景三、Redis 的演进过程四、Redis 的架构设计五、Redis 的数据类型及操作命令六、腾讯云数据库 Redis七、总结 Redis 是一种由 C 语言开发的 NoSQL 数据库,以其高性能的键值对存储和多种应用场景而闻名。本…

计算机网络概述(协议层次与服务模型)

目录 1.协议层次 2.服务模型 1.协议层次 层次化方式实现复杂网络功能: 将网络复杂的功能分成明确的层次,每一层实现了其中一个或一组功能,功能中有其上层可以使用的功能:服务本层协议实体相互交互执行本层的协议动作&#xff0…

EXCEL文件如何批量加密,有什么方法

EXCEL文件的加密,通常在EXCEL软件上进行设置,它有打开密码与写保护密码,如果有多个文件的话,想通过一键设置的方法进行密码设置,那么它通常需要用到第三方软件进行批处理,因为EXCEL软件只能对当前打开的文件…