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

python中的与时间相关的模块

python中的与时间相关的模块

  • 1. time 模块
  • 2. datetime 模块
  • 3. calendar 模块
  • 4. timeit 模块
  • 5. pytz 模块
  • 6. dateutil 模块
  • 参考资料

1. time 模块

time 模块提供了时间相关的函数,主要用于测量时间间隔、获取当前时间、格式化时间等

主要功能

  • 获取当前时间:time.time() 返回自纪元以来的秒数(浮点数)
  • 时间戳转换为结构化时间:time.localtime() 或 time.gmtime() 将时间戳转换为本地时间或 UTC 时间的结构化时间
  • 结构化时间转换为时间戳:time.mktime() 将结构化时间转换为时间戳
  • 格式化时间:time.strftime() 将结构化时间格式化为字符串
  • 时间延迟:time.sleep() 暂停执行指定的秒数
import time# 获取当前时间戳
timestamp = time.time()
print("Current timestamp:", timestamp)# 将时间戳转换为结构化时间
local_time = time.localtime(timestamp)
print("Local time:", local_time)# 将结构化时间转换为字符串
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", local_time)
print("Formatted time:", formatted_time)# 暂停 2 秒
print("Sleeping for 2 seconds...")
time.sleep(2)
print("Awake!")

2. datetime 模块

datetime 模块提供了处理日期和时间的类,比 time 模块更加灵活和强大

主要功能

  • 日期和时间类:datetime.date、datetime.time、datetime.datetime
  • 获取当前日期和时间:datetime.datetime.now() 或 datetime.datetime.utcnow()
  • 日期时间运算:datetime.timedelta 用于表示时间差
  • 时区处理:datetime.timezone 用于定义时区
  • 格式化和解析:datetime.datetime.strftime() 和 datetime.datetime.strptime()
from datetime import datetime, timedelta# 获取当前日期时间
now = datetime.now()
print("Current datetime:", now)# 格式化日期时间
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
print("Formatted datetime:", formatted_date)# 解析日期时间字符串
parsed_date = datetime.strptime("2024-12-25 10:30:00", "%Y-%m-%d %H:%M:%S")
print("Parsed datetime:", parsed_date)# 日期时间运算
future_date = now + timedelta(days=7)
print("7 days from now:", future_date)# 时区处理
from datetime import timezoneutc_now = datetime.now(timezone.utc)
print("UTC now:", utc_now)

3. calendar 模块

calendar 模块提供了处理日期和日历的函数,可以生成日历、检查闰年、计算月份天数等

主要功能

  • 生成日历:calendar.month() 生成指定月份的日历
  • 检查闰年:calendar.isleap() 判断某一年是否为闰年
  • 计算月份天数:calendar.monthrange() 返回指定月份的第一天是星期几以及该月的天数
import calendar# 生成 2024 年 12 月的日历
cal = calendar.month(2024, 12)
print("Calendar for December 2024:\n", cal)# 检查 2024 年是否为闰年
is_leap = calendar.isleap(2024)
print("Is 2024 a leap year?", is_leap)# 计算 2024 年 12 月的天数
month_range = calendar.monthrange(2024, 12)
print("December 2024 starts on a", calendar.day_name[month_range[0]], "and has", month_range[1], "days.")

4. timeit 模块

timeit 模块用于测量小段代码的执行时间,通常用于性能测试

主要功能

  • 测量代码执行时间:timeit.timeit() 测量代码的执行时间
  • 多次执行:可以指定代码执行的次数,以获得更精确的测量结果
import timeit# 测量列表推导式和普通循环的执行时间
list_comp_time = timeit.timeit('[i for i in range(1000)]', number=10000)
loop_time = timeit.timeit('l = []; for i in range(1000): l.append(i)', number=10000)print("List comprehension time:", list_comp_time)
print("Loop time:", loop_time)

5. pytz 模块

pytz 模块用于处理时区和夏令时,提供了全球时区的定义

主要功能

  • 时区转换:将时间转换为特定时区的时间
  • 夏令时处理:自动处理夏令时的转换
import pytz
from datetime import datetime# 获取当前时间并转换为纽约时间
utc_now = datetime.now(pytz.utc)
ny_tz = pytz.timezone('America/New_York')
ny_now = utc_now.astimezone(ny_tz)print("UTC now:", utc_now)
print("New York now:", ny_now)# 获取所有可用时区
all_timezones = pytz.all_timezones
print("Available timezones:", all_timezones)

6. dateutil 模块

dateutil 模块是 datetime 模块的扩展,提供了更强大的日期解析和操作功能

主要功能

  • 日期解析:dateutil.parser.parse() 可以解析各种格式的日期字符串
  • 相对日期:dateutil.relativedelta 用于表示相对日期差
from dateutil import parser, relativedelta# 解析日期字符串
parsed_date = parser.parse("2024-12-25 10:30:00")
print("Parsed date:", parsed_date)# 相对日期运算
from datetime import datetimenow = datetime.now()
future_date = now + relativedelta.relativedelta(months=1, days=5)
print("1 month and 5 days from now:", future_date)

应用场景

  • 系统日志:记录系统事件的时间戳
  • 定时任务:使用 time.sleep() 或 threading.Timer 实现定时任务
  • 时间格式化:将时间格式化为用户友好的字符串
  • 性能测试:使用 timeit 模块测量代码的执行时间
  • 时区转换:使用 pytz 或 datetime 处理时区转换和夏令时
  • 日期解析:使用 dateutil 解析各种格式的日期字符串

参考资料

  • Python官方文档 - time模块
  • Python官方文档 - datetime模块
  • Python官方文档 - calendar模块
  • Python官方文档 - timeit模块
  • pytz文档
  • dateutil文档

相关文章:

python中的与时间相关的模块

python中的与时间相关的模块 1. time 模块2. datetime 模块3. calendar 模块4. timeit 模块5. pytz 模块6. dateutil 模块参考资料 1. time 模块 time 模块提供了时间相关的函数,主要用于测量时间间隔、获取当前时间、格式化时间等 主要功能 获取当前时间&#xff…...

【Python运维】构建基于Python的自动化运维平台:用Flask和Celery

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在现代IT运维中,自动化运维平台扮演着至关重要的角色,它能够显著提高运维效率,减少人为错误,并且增强系统的可维护性。本文将引导读者如…...

Qt 12.28 day3

作业: 1】 思维导图 2】 在登录界面的登录取消按钮进行以下设置: 使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&a…...

Java爬虫获取速卖通(AliExpress)商品详情

1. 环境准备 在开始编写爬虫之前,需要准备以下环境和工具: Java开发环境:确保你的计算机上安装了Java开发工具包(JDK)。IDE:选择一个Java集成开发环境,如IntelliJ IDEA、Eclipse等。第三方库&…...

Learning Multi-Scale Photo Exposure Correction

Abstract 用错误的曝光捕捉照片仍然是相机成像的主要错误来源。曝光问题可分为以下两类:(i)曝光过度,即相机曝光时间过长,导致图像区域明亮和褪色;(ii)曝光不足,即曝光时间过短,导致图像区域变暗。曝光不足和曝光过度都会大大降低…...

【Rust自学】7.4. use关键字 Pt.1:use的使用与as关键字

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 7.4.1. use的作用 use的作用是将路径导入到当前作用域内。而引入的内容仍然是遵守私有性原则,也就是只有公共的部分引入进来才…...

C++ 设计模式:门面模式(Facade Pattern)

链接:C 设计模式 链接:C 设计模式 - 代理模式 链接:C 设计模式 - 中介者 链接:C 设计模式 - 适配器 门面模式(Facade Pattern)是一种结构型设计模式,它为子系统中的一组接口提供一个一致&#…...

从0到100:基于Java的大学选修课选课小程序开发笔记(上)

背景 为学生提供便捷的课程选择方式,并帮助学校进行课程管理和资源调配;主要功能包括:课程展示,自主选课,取消选课,后台录入课程,统计每门课程报名情况,导出数据,用户管…...

【算法题解】B. President‘s Office - Python实现

题目描述 Berland的总统办公室内设有多个办公桌,其中总统和其属下各自拥有独特颜色的办公桌。总统希望统计哪些属下的办公桌紧邻他的办公桌,但不记得确切的数量。 输入描述: 第一行包含三个值 n, m, c,分别是办公室的长度、宽度…...

【Spring Boot 】详解

Spring Boot 详解 一、Spring Boot 概述 (一)产生背景 随着 Java 应用的日益复杂,传统 Spring 框架在项目搭建与配置方面愈发繁琐,大量的 XML 配置、依赖管理等工作耗费开发者诸多精力。为解决这些痛点,Spring Boot …...

Redisson 框架详解

目录 一.为什么要使用分布式锁? 二.Redisson 的基本使用: 1.添加 Redisson 依赖: 2.在 application.yml 配置 Redis: 3. 创建 Redisson 客户端: (1)单节点模式: (…...

正确导入MapStruct并避免与Lombok编译冲突的深入分析

正确导入MapStruct并避免与Lombok编译冲突的深入分析 一、MapStruct与Lombok概述 1.1 MapStruct简介 MapStruct是一个代码生成器,它基于约定优于配置的原则,通过注解处理器在编译时自动生成源代码,实现对象之间的属性映射。MapStruct的优势在于减少样板代码,提高开发效率…...

K8S 黑魔法之如何从 Pod 拿到节点的命令行

搞 K8S 运维的时候,偶尔会遇到一个难题,定位到问题出在某个节点上,而由于权限审批,错误配置等等各种原因,没有办法拿到节点的 SSH 权限,无法进入节点命令行进一步排障。 这个时候,就可以用这个…...

【bluedroid】A2dp Source播放流程源码分析(4)

接上集分析:【bluedroid】A2dp Source播放流程源码分析(3)-CSDN博客 蓝牙和AUDIO之间的接口 蓝牙和audio之间的通信是通过socket,管理socket中的文件是UIPC,UIPC管理两条socket。 A2DP_CTRL_PATH /data/misc/bluedroid/.a2dp_ctrl A2DP_DATA_PATH /data/misc/bluedroid…...

计算机网络 (9)数据链路层

前言 计算机网络中的数据链路层(Data Link Layer)是OSI(开放系统互连)参考模型中的第二层,位于物理层和网络层之间。它在物理层提供的服务基础上,负责在相邻节点之间建立、维护和终止链路,确保数…...

kubernetes学习-集群搭建部署(一)

一、开三台虚拟机进行试验(centos7) 1、初始操作 # 关闭防火墙 systemctl stop firewalld systemctl disable firewalld# 关闭selinux sudo sed -i s/enforcing/disabled/ /etc/selinux/config # 永久 setenforce 0 # 临时# 关闭swap sudo swapoff -a # 临时 s…...

docker commit生成的镜像瘦身

1、清除宿主系统的docker资源 docker system prune -a --volumes 2、清理容器内系统的临时文件和缓存 # 删除包管理器缓存 apt-get clean rm -rf /var/lib/apt/lists/* # 删除日志文件 rm -rf /var/log/* # 删除临时文件 rm -rf /tmp/* 3、安装docker squash工具&#xff0…...

基于Spring Boot的宠物领养系统的设计与实现(代码+数据库+LW)

摘 要 如今社会上各行各业,都在用属于自己专用的软件来进行工作,互联网发展到这个时候,人们已经发现离不开了互联网。互联网的发展,离不开一些新的技术,而新技术的产生往往是为了解决现有问题而产生的。针对于宠物领…...

7.若依参数设置、通知公告、日志管理

参数设置 对系统中的参数进行动态维护。 关闭验证码校验功能 打开页面注册功能 需要修改前端页面代码 通知公告 促进组织内部信息传递 若依只提供了一个半成品,只实现了管理员可以添加通知公告。 日志管理 追踪用户行为和系统运行状况。 登录日志 和操作日志…...

基于FISCO BCOS的电子签署系统

概述 本项目致力于构建一个安全、高效且功能完备的电子签署系统,通过整合区块链技术与传统数据库管理,为用户提供了可靠的电子签署解决方案,有效应对传统电子签署系统的数据安全隐患,满足企业和个人在数字化办公环境下对电子文档…...

接口测试中缓存处理策略

在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...

【2025年】解决Burpsuite抓不到https包的问题

环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...

网络编程(UDP编程)

思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

AI,如何重构理解、匹配与决策?

AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...