Python时间模块之time模块

news2024/11/23 8:00:34

在项目开发中做功能经常会用到关于时间的操作。比如会员过期的定时任务,一些代码的延迟执行。今天介绍时间模块中的time模块。

目录

1.表示时间的方式:

2.格式化时间中字符的含义:

3.函数转换关系

4.函数介绍及应用

time()

localtime()

strftime()

strptime()

mktime()

gmtime()

sleep()

asctime()

ctime()


1.表示时间的方式:

在Python中有三种表示时间的方式:

时间戳:是指某个时间与1970年1月1日00:00:00的差值,单位为秒,是一个浮点型数值。

格式化时间:格式化时间由字母和数字表示的时间,比如:’Mon Oct 29 16:04:27 2018’。

元组:将时间的信息放到一个元组中。

2.格式化时间中字符的含义:

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

%Y 四位数的年份表示(000-9999)

%m 月份(01-12)

%d 月内中的一天(0-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 当前时区的名称

%% %号本身

3.函数转换关系

time模块的函数转换关系表现为下图:

4.函数介绍及应用

time()

该函数返回当前时间的时间戳,也就是距离1970年1月1日00:00:00的差值,是一个以秒为单位的浮点小数。

>>> import time
>>>
>>> now = time.time()
>>>
>>> # 从1970年1月1日午夜经过秒数的浮点小数。
>>> print("当前时间戳为:", now)
当前时间戳为: 1670308634.4436653
>>> print("距当前秒数为:", int(now))
距当前秒数为: 1670308634
>>> print("距当前毫秒数为:", int(now) * 1000)
距当前毫秒数为: 1670308634000

注意:1970年之前的日期无法表示;unix/window 2038年后的也无法表示。

localtime()

该函数返回当前的时间元组,参数为时间戳,无参数时默认当前时间戳。

>>> import time
>>> # 当前时间
>>> time.localtime()
time.struct_time(tm_year=2022, tm_mon=12, tm_mday=6, tm_hour=14, tm_min=59, tm_sec=30, tm_wday=1, tm_yday=340, tm_isdst=0)
>>> # 指定时间
>>> time.localtime(1670224845.5153031)
time.struct_time(tm_year=2022, tm_mon=12, tm_mday=5, tm_hour=15, tm_min=20, tm_sec=45, tm_wday=0, tm_yday=339, tm_isdst=0)

时间元组各属性含义:

tm_year:4位数年 取值:2022

tm_mon:月 取值:1 到 12

tm_mday:日 取值:1 到 31

tm_hour:小时 取值:0 到 23

tm_min:分钟 取值:0 到 59

tm_sec:秒 取值:0 到 61 (60或61 是闰秒)

tm_wday:一周的第几日 取值:0到6 (0是周一)

tm_yday:一年的第几日 取值:1 到 366(儒略历)

tm_isdst:夏令时 取值:-1, 0, 1, -1是决定是否为夏令时

strftime()

使用 time 模块的 strftime 方法来格式化日期,不传入参数默认为time.localtime()。

>>> import time
>>> # 格式化为年-月-日 时:分:秒形式
>>> print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
2022-12-06 14:42:04

strptime()

该函数根据fmt的格式把一个时间字符串解析为时间元组。

>>> import time
>>> struct_time = time.strptime('2022-12-05 18:20:57', "%Y-%m-%d %H:%M:%S")
>>> print("时间元组:", struct_time)
时间元组: time.struct_time(tm_year=2022, tm_mon=12, tm_mday=5, tm_hour=18, tm_min=20, tm_sec=57, tm_wday=0, tm_yday=339, tm_isdst=-1)

mktime()

该函数可把时间元组转化为时间戳。

>>> import time
>>> struct_time = time.strptime('2022-12-05 18:20:57', "%Y-%m-%d %H:%M:%S")
>>> print("时间元组:", struct_time)
时间元组: time.struct_time(tm_year=2022, tm_mon=12, tm_mday=5, tm_hour=18, tm_min=20, tm_sec=57, tm_wday=0, tm_yday=339, tm_isdst=-1)
>>> print("当前时间戳:", time.mktime(struct_time))
当前时间戳: 1670235657.0

gmtime()

该函数和localtime()的功能一样,只是它返回的时间是格林威治天文时间(UTC),也就是世界标准时间。中国时间为UTC+8。

>>> import time
>>> # 本地时间
>>> print(time.localtime())
time.struct_time(tm_year=2022, tm_mon=12, tm_mday=6, tm_hour=14, tm_min=47, tm_sec=58, tm_wday=1, tm_yday=340, tm_isdst=0)
>>> # 格林威治时间
>>> print(time.gmtime())
time.struct_time(tm_year=2022, tm_mon=12, tm_mday=6, tm_hour=6, tm_min=47, tm_sec=59, tm_wday=1, tm_yday=340, tm_isdst=0)

sleep()

该函数可延迟程序运行,参数数字,单位秒。

>>> import time
>>> time.sleep(3)
>>>

asctime()

该函数将时间元组转换为格式化时间。参数是时间元组,为空时,默认是time.localtime的值,得到当前的日期、时间、星期;另外也可以自己设置参数。

>>> import time
>>> print(time.asctime()) # 默认当前时间元组localtime
Tue Dec  6 14:51:41 2022
>>> print(time.asctime(time.localtime(1670224845.5153031))) # 指定时间元组
Mon Dec  5 15:20:45 2022

ctime()

该函数将一个时间戳转换成格式化时间。如果没有传入参数,默认传入time.time()。

>>> import time
>>> print(time.ctime())
Tue Dec  6 14:52:37 2022
>>> print(time.ctime(1670224845.5153031))
Mon Dec  5 15:20:45 2022

把这些都整理一遍,感觉对time模块函数印象又加深了,以后如果忘记了找起来也方便!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

10Gb每秒!SM4的单核“心”!海泰携手海量数据安全“闪”护

引言 密码技术是保护网络与信息系统安全的核心技术,已经广泛应用到金融、能源、通信、交通、水利等各行各业,为国家安全和经济发展发挥重要作用。商用密码应用安全性评估(简称密评),是指在釆用商用密码技术、产品和服务…

[附源码]计算机毕业设计汽车租赁管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【numpy简介、入门、数组创建】

🤵‍♂️ 个人主页老虎也淘气 个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏…

基于jsp+mysql+ssm学生网上请假系统-计算机毕业设计

项目介绍 随着高校招生规模的逐步扩大和教学方式的改革,在校学生人数将不断增加。另一方面,我国高等学校基层学生考核工作的内容杂,管理细,要求高,头绪多,传统的手工档案式管理办法已基本不适应新形势的要…

[附源码]JAVA毕业设计社区管理与服务(系统+LW)

[附源码]JAVA毕业设计社区管理与服务(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术&a…

XX集团BIM项目解决方案

目 录 一、BIM发展现状 二、集团BIM建设总体规划(建议) 1、BIM实施目标 2、BIM实施的范围 3、BIM实施原则 4、集团BIM项目组织架构 4.1职能分配 4.2建模组织形式 4.3人员匹配建议 5、集团BIM应用功能架构 5.1 BIM平台对集团管理层面的价值 5…

原来Python自带了数据库,用起来真方便

Python作为数据科学主流语言,被广泛用于数据读存、处理、分析、建模,可以说是无所不能。 数据一般存放在本地文件或者数据库里,之前介绍过如何使用python读取本地文件,也对# PyMySQL、cx_Oracle等数据库连接库做过简单的使用分享…

乾元通多卡聚合通信设备应急指挥车视频图传解决方案

行业现状 1) 不稳定:单一通信链路受运营商网络覆盖影响,不同区域信号强度不一样,无法实现。 2) 网速慢:受基站信号质量及拥塞影响,单路网速较差,高清视频监控等由于网络带宽不够,只能以低画质…

基于jsp+ssm的新生入学报道系统-计算机毕业设计

项目介绍 众多高校为了响应国家的号召,很多管理办法都落实到科学管理,通过计算机来实现对学校的具体管理办法当中,不仅仅促进了学校里计算机系统管理的发展,同时一定程度上加大了对学校的管理力度,数据量的不断增加&a…

Java常问面试题概要答案

文章目录1.JDK、JRE、JVM的区别2.hashcode()与equals()之间的关系3.String、StringBuffer、StringBuilder的区别4.Java泛型5.ArrayList和LinkedList区别6.ConcurrentHashMap7. B树和B树8.负载均衡常见策略1.JDK、JRE、JVM的区别 JDK:java标准开发包,包含…

【安全测试】渗透测试神器BurpSuite环境搭建

工欲善其事,必先利其器,要想更好的进行安全测试,就需要有一个趁手的工具,BurpSuite就是一个不错的选择,是广大安全测试工程师的必备工具,今天就带着大家把这个工具给装上,开启大家的安全测试之旅…

数据结构与算法基础-学习-06-线性表之创建循环链表、创建尾指针循环链表、两个尾指针循环链表连接

一、测试环境 名称值cpu12th Gen Intel Core™ i7-12700H操作系统CentOS Linux release 7.9.2009 (Core)内存3G逻辑核数2gcc 版本4.8.5 20150623 二、个人理解 1、循环链表优点 无论指针指向哪个节点,都可以访问任何一个其他节点。 2、尾指针循环链表优点 同上…

实现端口扫描

实现原理 tcp扫描 创建tcp客户端然后与目标地址的每个端口建立连接,如果能连接成功说明目标地址此端口已经被打开。 判断是什么协议 连接成功后读取字节,如ssh协议的端口会读取到如这种的数据SSH-2.0-OpenSSH_7.4;创建http/s客户端与已经扫描出来的端…

LINUX漏洞复现篇之ShellShock漏洞

简介 ShellShock漏洞, 中文称为"破壳漏洞", 是Unix Shell中的安全漏洞 在一些网络服务器的部署中, 使用bash来处理某些请求, 允许攻击者通过低版本的bash执行任意Shell命令 此漏洞在调用BashShell之前使用payload创建环境变量, 这些环境变量包含Shell代码, 在Shel…

家庭生活开支如何记录,怎么记账一目了然

家庭日常开支明细怎么记账一目了然呢?很多上了年龄的人比较擅长使用传统的方法纸笔记录家庭账目,可是统计起来就比较麻烦;而年轻人则比较跟随时代潮流,喜欢使用一些电子记账工具,比如借助电脑手机上的记账类软件来记录…

5个实用的性能测试工具(软件测试工程师必备)

在日常的软件测试工作中,最常用的性能测试工具是LoadRunner和Jmeter。今天给大家整理了5个针对web应用程序性能和负载压力能力的最广泛使用的性能测试工具。 这几个负载测试工具将确保应用程序在高峰流量和极端压力条件下的性能。 包括开源和授权的性能测试工具。…

国内食用油行业数据浅析

大家好,这里是小安说网控。 食用油是生活必备品之一,其中植物油占消费主导地位。 据国家统计局数据,2022年10月份国内精制食用植物油产量当期值为428.6万吨,同比下降0.8%;1-10月份精制食用植物油累计产量3925.2万吨&am…

Whitelabel Error Page

直接上图,就这个该死的错误!! 控制台报错:No mapping for GET /front/page/login.html 首先这个错误就是请求路径问题,或者根本没加载上html。 原因:springboot中,静态资源默认访问static和te…

现在的程序员真是越来越懒了,api 文档都懒得写!程序员:“api工具惯的”

为了让大家更能清楚了解 Api 相关往期内容,我写了一个阅读指引: 序号学习路径指引链接1Api -- 连接世界的 Super StarApi -- 连接世界的Super Star_不吃西红柿丶的博客-CSDN博客2软件吞噬世界,Api 快速入门到放弃软件吞噬世界,Ap…

为什么在vue2中改变数据视图不会更新,带你阅读源码

1. 监听数组变化 其实 Vue 监听数组变化的原理非常简单, 就是将数组的主要方法包裹了一遍只要用户调用以下方法, 就会通知 Watcher 自动更新视图: push()pop()shift()unshift()splice()sort()reverse() 演示 工程源码: src/core/observer/array.js // 获取数组的原型 Array.…