百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

一篇文章总结一下Python库中关于时间的常见操作

off999 2024-09-13 13:29 43 浏览 0 评论

前言

本次来总结一下关于Python时间的相关操作,有一个有趣的问题。

如果你的业务用不到时间相关的操作,你的业务基本上会一直用不到。

但是如果你的业务一旦用到了时间操作,你就会发现,淦,到处都是时间操作。。。

所以思来想去,还是总结一下吧,本次会采用类型注解方式。


time包


import time

时间戳

1970年1月1日00:00:00标准时区诞生到现在时间一共过了多少秒。

代码



timestamp = time.time()  # type:floatprint(timestamp, type(timestamp))

执行结果

睡眠

有时候可能我们可能需要模仿一些IO请求,假装让程序休眠一下,所以需要用到timesleep函数。

代码



# 睡眠 1秒time.sleep(1)

本地时区

本地时区需要用到timelocaltime方法。

代码



t = time.localtime()  # type:time.struct_timeprint(t, type(t))

执行结果

localtime还能接收一个时间戳参数。

代码




# 将时间戳转换成 struct_time 对象t = time.localtime(1606395685.1878598)  # type:time.struct_timeprint(t, type(t))

执行结果

简单的时间格式

代码



t = time.ctime()  # type:strprint(t, type(t))

执行结果

虽然这个能把时间展示出来,但是这个格式实在是不是太好看。


同理,time.ctime()也是可以接收一个时间戳的。

代码



t = time.ctime(1606395685.1878598)  # type:strprint(t, type(t))

执行结果

时间格式化

日期格式 -> 字符串(strftime)

代码




t = time.localtime()  # type:time.struct_timet_str = time.strftime("%Y-%m-%d", t)  # type:strprint(t_str, type(t_str))

执行结果

字符串日期 -> 日期(strptime)

代码




t_str = "2020-11-02"t_time = time.strptime(t_str, "%Y-%m-%d")  # type:time.struct_timeprint(t_time, type(t_time))

执行结果

格式化补充

主要有如下格式

格式含义%Y完整的年份%m月份(01 - 12)%d一个月中的第几天(01 - 31%H一天中的第几个小时(24小时制,00 - 23)%M分钟数(00 - 59)%S秒(01 - 61)

具体详见:


https://www.runoob.com/python/python-date-time.html


datetime包

注:datetimetime是两个不同的类型,不能混用。


from datetime import datetime

datetime.today()

代码





t = datetime.today()  # type:datetimeprint(t, type(t))print(t.year)  # 年份print(t.month)  # 月份

执行结果

datetime.now()

datetime.today()基本一样,返回的是本地时间

代码



t = datetime.now()  # type:datetimeprint(t,type(t))

执行结果

datetime.utcnow()

utcnow返回的是标准(UTC)时间,上述俩返回的都是本地时间,我们是东八区

代码





t = datetime.now()print("东八区时间:", t)t = datetime.utcnow()  # type:datetimeprint("UTC时间:", t)

执行结果

时间戳转datetime

有时候,我们拿到的,就是时间戳,那就只能转了。

代码







# 时间戳timestamp = time.time()print(f"timestamp:{timestamp},type:{type(timestamp)}")# 时间戳转datetimet = datetime.fromtimestamp(timestamp)print(f"t:{t},type:{type(t)}")

执行结果

datetime -> 字符串日期(strftime)

代码






from datetime import datetime
t = datetime.now()str_datetime = t.strftime("%Y-%m-%d %H:%M:%S")print(f"字符串日期:{str_datetime},type:{type(str_datetime)}")

执行结果

字符串日期 -> datetime(strptime)

代码






from datetime import datetime
str_datetime = "2020-11-29 22:05:20"t = datetime.strptime(str_datetime, "%Y-%m-%d %H:%M:%S")print(f"t:{t},type:{type(t)}")

执行结果

时间加减

这才是本次的重头戏,好像只有datetime这个包,才有时间加减的。

时间加减的具体用途很多,必须多久过期什么的,多久之后提醒,都需要提前计算时间,还是很重要的。

代码








from datetime import datetimeimport datetime as idatetime
t = datetime.now()print(f"当前时间:{t}")three_day = t + idatetime.timedelta(days=3)print(f"三天后时间:{three_day}")

执行结果

可以发现,这个时间确实是+成功了。

但是自带的时间加减,有个题,只能加天,不能加月,甚至年。

如果想要时间+月等,还要自己写逻辑。

datetime时间自由加减

有个包正好解决了这个问题。

安装


pip install python-dateutil

代码












from datetime import datetimefrom dateutil.relativedelta import relativedelta
t = datetime.now()print(f"当前时间:{t}")three_time = t + relativedelta(months=3)print(f"三个月后时间:{three_time}")one_year = t+relativedelta(years=1)print(f"一年后时间:{one_year}")up_year = t+relativedelta(years=-1)print(f"去年这个时间:{up_year}")

执行结果

用法很简单,如果想加月/年份,就写正数,如果想减,就写负数,这个方法基本上将python在操作时间上的缺点给弥补了。


总结

本篇主要讲述的是关于Python时间的相关总结,相对来说,更推荐使用datetime

需要注意的是,timedatetime是俩类型,是不能混用的。

其实最重要的是字符串时间->时间类型,这个在实际中用的非常多!

顺便还有python-dateutilrelativedelta相关方法,能够自由加减时间,算是挺方便的。

如果在操作过程中有任何问题,记得下面留言,我们看到会第一时间解决问题。

越努力,越幸运。如果觉得还不错,记得动手点赞一下哈。感谢你的观看。

相关推荐

阿里云国际站ECS:阿里云ECS如何提高网站的访问速度?

TG:@yunlaoda360引言:速度即体验,速度即业务在当今数字化的世界中,网站的访问速度已成为决定用户体验、用户留存乃至业务转化率的关键因素。页面加载每延迟一秒,都可能导致用户流失和收入损失。对...

高流量大并发Linux TCP性能调优_linux 高并发网络编程

其实主要是手里面的跑openvpn服务器。因为并没有明文禁p2p(哎……想想那么多流量好像不跑点p2p也跑不完),所以造成有的时候如果有比较多人跑BT的话,会造成VPN速度急剧下降。本文所面对的情况为...

性能测试100集(12)性能指标资源使用率

在性能测试中,资源使用率是评估系统硬件效率的关键指标,主要包括以下四类:#性能测试##性能压测策略##软件测试#1.CPU使用率定义:CPU处理任务的时间占比,计算公式为1-空闲时间/总...

Linux 服务器常见的性能调优_linux高性能服务端编程

一、Linux服务器性能调优第一步——先搞懂“看什么”很多人刚接触Linux性能调优时,总想着直接改配置,其实第一步该是“看清楚问题”。就像医生看病要先听诊,调优前得先知道服务器“哪里...

Nginx性能优化实战:手把手教你提升10倍性能!

关注△mikechen△,十余年BAT架构经验倾囊相授!Nginx是大型架构而核心,下面我重点详解Nginx性能@mikechen文章来源:mikechen.cc1.worker_processe...

高并发场景下,Spring Cloud Gateway如何抗住百万QPS?

关注△mikechen△,十余年BAT架构经验倾囊相授!大家好,我是mikechen。高并发场景下网关作为流量的入口非常重要,下面我重点详解SpringCloudGateway如何抗住百万性能@m...

Kubernetes 高并发处理实战(可落地案例 + 源码)

目标场景:对外提供HTTPAPI的微服务在短时间内收到大量请求(例如每秒数千至数万RPS),要求系统可弹性扩容、限流降级、缓存减压、稳定运行并能自动恢复。总体思路(多层防护):边缘层:云LB...

高并发场景下,Nginx如何扛住千万级请求?

Nginx是大型架构的必备中间件,下面我重点详解Nginx如何实现高并发@mikechen文章来源:mikechen.cc事件驱动模型Nginx采用事件驱动模型,这是Nginx高并发性能的基石。传统...

Spring Boot+Vue全栈开发实战,中文版高清PDF资源

SpringBoot+Vue全栈开发实战,中文高清PDF资源,需要的可以私我:)SpringBoot致力于简化开发配置并为企业级开发提供一系列非业务性功能,而Vue则采用数据驱动视图的方式将程序...

Docker-基础操作_docker基础实战教程二

一、镜像1、从仓库获取镜像搜索镜像:dockersearchimage_name搜索结果过滤:是否官方:dockersearch--filter="is-offical=true...

你有空吗?跟我一起搭个服务器好不好?

来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。昨天闲的没事的时候,随手翻了翻写过的文章,发现一个很严重的问题。就是大多数时间我都在滔滔不绝的讲理论,却很少有涉及动手...

部署你自己的 SaaS_saas如何部署

部署你自己的VPNOpenVPN——功能齐全的开源VPN解决方案。(DigitalOcean教程)dockovpn.io—无状态OpenVPNdockerized服务器,不需要持久存储。...

Docker Compose_dockercompose安装

DockerCompose概述DockerCompose是一个用来定义和管理多容器应用的工具,通过一个docker-compose.yml文件,用YAML格式描述服务、网络、卷等内容,...

京东T7架构师推出的电子版SpringBoot,从构建小系统到架构大系统

前言:Java的各种开发框架发展了很多年,影响了一代又一代的程序员,现在无论是程序员,还是架构师,使用这些开发框架都面临着两方面的挑战。一方面是要快速开发出系统,这就要求使用的开发框架尽量简单,无论...

Kubernetes (k8s) 入门学习指南_k8s kubeproxy

Kubernetes(k8s)入门学习指南一、什么是Kubernetes?为什么需要它?Kubernetes(k8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。它...

取消回复欢迎 发表评论: