全面掌握Python时间处理
全面掌握Python时间处理
flyfish
datetime: 最适合处理日期和时间,支持创建时间对象、格式化时间、计算时间差等。time: 提供了获取时间戳、将时间戳转换为本地时间、暂停程序执行等功能。timeit: 主要用于性能测试,帮助开发者了解某段代码的执行效率。
基础知识
在编程中,“时间”通常有两种主要形式:
- 时间点(Time Point):指某一特定时刻,如“2025年2月19日 11时17分”。
- 时间段(Duration or Time Interval):表示两个时间点之间的差异,如“3小时”。
datetime 模块
这是Python中最常用的用于处理日期和时间的模块。
基本用法
from datetime import datetime, timedelta# 获取当前时间
now = datetime.now()
print("当前时间:", now)# 创建一个指定的时间
specific_time = datetime(2025, 2, 19, 11, 17)
print("指定时间:", specific_time)# 时间格式化输出
formatted_time = now.strftime("%Y-%m-%d %H:%M:%S")
print("格式化后的时间:", formatted_time)# 计算时间差
future_time = now + timedelta(days=5, hours=3)
print("5天3小时后的时间:", future_time)
time 模块
这个模块提供了更多底层的时间操作功能。
基本用法
import time# 获取当前时间戳(自纪元以来的秒数)
timestamp = time.time()
print("当前时间戳:", timestamp)# 将时间戳转换为可读格式
local_time = time.localtime(timestamp)
readable_time = time.strftime("%Y-%m-%d %H:%M:%S", local_time)
print("可读时间:", readable_time)# 暂停程序执行
print("开始暂停...")
time.sleep(2) # 暂停2秒
print("暂停结束")# 高精度计时器
start_time = time.perf_counter()
# 执行一些代码
end_time = time.perf_counter()
print("代码执行耗时:", end_time - start_time, "秒")
timeit 模块
主要用于测量小段代码执行所需的时间,特别适合性能测试。
基本用法
import timeitdef test_function():"""要测试的函数"""return [x for x in range(1000)]# 使用timeit测量函数执行时间
execution_time = timeit.timeit(test_function, number=1000) # 测试函数执行1000次的总时间
print("函数执行1000次的总时间:", execution_time, "秒")# 使用default_timer进行高精度计时
start = timeit.default_timer()
test_function() # 直接调用函数
end = timeit.default_timer()
print("单次执行时间:", end - start, "秒")
时间格式化符号
在Python中,使用strftime()函数可以将时间格式化为特定的字符串形式。
常见的日期和时间格式化符号:
| 符号 | 描述 |
|---|---|
%Y | 四位数的年份(如2025) |
%m | 月份(01-12) |
%d | 月内的天数(01-31) |
%H | 24小时制的小时数(00-23) |
%M | 分钟数(00-59) |
%S | 秒数(00-59) |
%a | 本地简化星期名称(如Mon) |
%A | 本地完整星期名称(如Monday) |
%b | 本地简化的月份名称(如Jan) |
%B | 本地完整的月份名称(如January) |
%c | 本地相应的日期表示和时间表示 |
%j | 年内的一天(001-366) |
%p | 本地AM或PM的等价符 |
%U | 一年中的星期数(00-53),星期天为一周的开始 |
%w | 星期几(0-6),星期天为一周的开始 |
%W | 一年中的星期数(00-53),星期一为一周的开始 |
%x | 本地相应的日期表示 |
%X | 本地相应的时间表示 |
%Z | 当前时区的名称 |
%% | 百分号本身 |
例如,要格式化当前时间为%Y-%m-%d %H:%M:%S的形式:
from datetime import datetimenow = datetime.now()
formatted_time = now.strftime("%Y-%m-%d %H:%M:%S")
print("格式化后的时间:", formatted_time)
定时器实现
定时器可以通过多种方式实现,下面是几种常见的方式:
使用 time.sleep()
这是一个简单的延时方法,适合用于短时间的暂停。
import timedef timer(seconds):print(f"计时开始,等待 {seconds} 秒...")time.sleep(seconds)print("计时结束!")timer(5) # 等待5秒
使用 threading.Timer
这个方法适合需要在后台运行定时任务的情况。
import threadingdef task():print("定时任务执行!")def set_timer(seconds):timer = threading.Timer(seconds, task)timer.start()print(f"定时器设置完成,将在 {seconds} 秒后执行任务...")set_timer(5) # 5秒后执行任务
使用 sched 模块
sched模块提供了一个调度器类,可以在指定时间执行计划任务。
import sched
import timescheduler = sched.scheduler(time.time, time.sleep)def task(name):print(f"任务 {name} 执行于 {time.ctime()}")def set_scheduler(seconds, name):scheduler.enter(seconds, 1, task, (name,))print(f"调度器设置完成,任务 {name} 将在 {seconds} 秒后执行...")scheduler.run()set_scheduler(5, "example_task") # 5秒后执行任务
获取某月日历
import calendarcal = calendar.month(2025, 2) # 获取2025年2月的日历
print("以下输出2025年2月份的日历:")
print(cal)
判断是否为闰年
import calendaryear = 2025
if calendar.isleap(year):print(f"{year} 是闰年")
else:print(f"{year} 不是闰年")
计算两个日期之间的差值
from datetime import datetimedate1 = datetime(2025, 2, 19)
date2 = datetime(2025, 2, 28)difference = date2 - date1
print(f"日期差: {difference.days} 天")
相关文章:
全面掌握Python时间处理
全面掌握Python时间处理 flyfish datetime: 最适合处理日期和时间,支持创建时间对象、格式化时间、计算时间差等。time: 提供了获取时间戳、将时间戳转换为本地时间、暂停程序执行等功能。timeit: 主要用于性能测试,帮助开发者了解某段代码的执行效率。…...
LLM 推理中推理-时间计算技巧
25年2月来自香港科技大学广州分校的论文“Bag of Tricks for Inference-time Computation of LLM Reasoning”。 随着大语言模型 (LLM) 的进步,解决复杂的推理任务越来越受到关注。推理-时间计算方法(例如 Best-of-N、波束搜索等)特别有价值…...
matplotlib 如何是的横坐标纵向显示
在 matplotlib 中,若要让横坐标标签纵向显示,可以使用 plt.xticks() 或 ax.set_xticklabels() 方法结合旋转参数来实现。 方法一:使用 plt.xticks() 当你使用 matplotlib 的 pyplot 接口&am…...
Go日期时间处理工具Carbon
**注意:**本文大部分内容摘抄自-https://github.com/dromara/carbon/blob/master/README.cn.md使用文档 一、简介 一个轻量级的、易于使用的、语义智能的日期时间处理库,支持链式调用,已被 awesome-go 收录,现已经捐赠给了 drom…...
【Spring生命周期】Bean元信息配置阶段
引言 本系列将详细讲解Spring生命周期的13个阶段,从源码角度帮助我们更好的理解Spring框架和bean生命周期全流程 Bean信息定义4种方式 API的方式Xml文件方式properties文件的方式注解的方式 在 Spring 框架中,Bean 元信息配置阶段是整个 Bean 生命周…...
linux有名管道的文件描述符3和4
在使用有名管道(Named Pipe,FIFO)时,返回的文件描述符 3 和 4 是通过 open() 系统调用打开有名管道后分配的文件描述符。文件描述符是进程用来访问打开的文件或管道的整数标识符。 1. 文件描述符的分配规则 文件描述符是一个非负整…...
Mobaxterm: Local port forwarding Remote port forwarding
文章目录 Remote port forwardingLocal port forwardingAppendix: Deploy clash in docker Remote port forwarding If you want to share the proxy on your local machine with the remote server, use Remote port forwarding. Consider this scenario: There is no proxy…...
DeepSeek模型快速部署教程-搭建自己的DeepSeek
前言:在人工智能技术飞速发展的今天,深度学习模型已成为推动各行各业智能化转型的核心驱动力。DeepSeek 作为一款领先的 AI 模型,凭借其高效的性能和灵活的部署方式,受到了广泛关注。无论是自然语言处理、图像识别,还是…...
分布式之分布式ID
目录 需求 1. 全局唯一性 2. 高性能 3. 高可用性 4. 可扩展性 5. 有序性 6. 时间相关 7. 长度适中 8. 安全性 9. 分布式一致性 10. 易于集成 常见解决方案 选择依据 数据库号段模式 核心概念 工作流程 优点 缺点 实现示例 优化策略 适用场景 Snowflake雪…...
2025/2/19机试准备
1.%c不忽略空格( ) 2.启示 #include <stdio.h> #include <string.h> int main(){char str[100]{0};int x,y;int n1,n2,n3;int i;while(scanf("%s",str)!EOF){istrlen(str);if(i%30){//12446-2n1i/3;n3i/3;n2i/32;}else if(i%31){…...
用友U8 固定资产-批量变动单
前提:没有结账,没有结账,没有结账 如果已经结账,可反结账 1.需要先计提折旧,操作路径是点击【固定资产】-【计提折旧】-计提本月折旧 2.进行资产减少操作,点击【资产处置】-【资产减少】,如…...
基于golang语言开发publicChain项目实战教程
概述:简易公链 任何公链只要涉及转账都会用到UTXO,UTXO并不是面向对象的思维,通过计算如何去打包多笔交易,各种加密算法,钱包 如何生成地址,节点A,节点B,节点C,节点分全节点,钱包节点ÿ…...
Jtti.cc:CentOS下PyTorch运行出错怎么办
在CentOS上运行PyTorch时遇到错误,可以按照以下步骤进行排查和解决: 1. 检查Python版本 Python版本:确保Python版本符合PyTorch要求(如3.6-3.9)。 虚拟环境:建议使用虚拟环境隔离依赖。 python3 -m venv myenv source myenv/bin/a…...
基于微信小程序的电影院订票选座系统的设计与实现,SSM+Vue+毕业论文+开题报告+任务书+指导搭建视频
本系统包含用户、管理员两个角色。 用户角色:注册登录、查看首页电影信息推荐、查看电影详情并进行收藏预定、查看电影资讯、在线客服、管理个人订单等。 管理员角色:登录后台、管理电影类型、管理放映厅信息、管理电影信息、管理用户信息、管理订单等。…...
自然语言处理NLP 02统计语言模型
目录 jieba中文分词 TF-IDF TF(词频,Term Frequency) IDF(逆文档频率,Inverse Document Frequency) 总结 案例:从文本数据中提取并分析关键词的重要性 jieba中文分词 jieba 是一个强大的…...
【环降噪实验】详细介绍
环降噪实验(Circumferential Noise Cancellation Experiment)通常指在工程领域中,特别是在噪声控制领域,通过模拟或实际环形噪声传播的环境来验证和测试不同噪声消除技术的效果。其主要目标是在特定区域或环境中,利用主…...
Qt开发④Qt常用控件_上_QWdget属性+按钮类控件
目录 1. 控件概述和发展 2. QWidget 核心属性 2.1 核心属性概览 2.2 enabled 是否可用 2.3 geometry 位置尺寸 2.4 windowTitle 标题 2.5 windowIcon 图标 2.6 windowOpacity 不透明度 2.7 cursor 光标 2.8 font 字体 2.9 toolTip 鼠标悬停提示 2.10 focusPolicy 焦…...
FreeSwitch之mod_cidlookup 和 mod_blacklist和mod_curl的抉择
FreeSWITCH 的 mod_curl 模块是一个用于通过 HTTP/HTTPS 协议与外部服务进行交互的核心模块。它允许 FreeSWITCH 在呼叫处理过程中发起 HTTP 请求(如 GET、POST 等),并将响应结果集成到呼叫流程中。以下是关于 mod_curl 的详细介绍࿱…...
强化学习-价值学习算法
Sarsa 理论解释 Sarsa是基于时序差分算法的,它的公式非常简单且易理解,不像策略梯度算法那样需要复杂的推导过程。 Sarsa的核心函数是 Q ( s , a ) Q(s, a) Q(s,a),它的含义是在状态 s s s下执行 a a a,在后续轨迹中获取的期望…...
Apache Struts RCE (CVE-2024-53677)
前言 对目前的Apache Struts RCE (CVE-2024-53677)的poc进行总结,由于只能单个ip验证,所以自己更改一下代码,实现:多线程读取url验证并保存,更改为中文解释 免责声明 请勿利用文章内的相关技术从事非法测试…...
23. AI-大语言模型-DeepSeek
文章目录 前言一、DeepSeek是什么1. 简介2. 产品版本3. 特征4. 地址链接5. 三种访问方式1. 网页端和APP2. DeepSeek API 二、DeepSeek可以做什么1. 应用场景2. 文本生成1. 文本创作2. 摘要与改写3. 结构化生成 3. 自然语言理解与分析1. 语义分析2. 文本分类3. 知识推理 4. 编程…...
verilog基础知识
一,Verilog和VHDL区别 全世界高层次数字系统设计领域中,应用Verilog和VHDL的比率是80%和20%;这两种语言都是用于数字电路系统设计的硬件描述语言, 而且都已经是 IEEE 的标准。 VHDL 是美国军方组织开发的,VHDL1987年成为标准;Verilog 是由一个公司的私有财产转化而来,…...
负载测试工具有哪些?
Apache JMeter Apache JMeter 是一款开源的性能测试工具,主要用于对 Web 应用程序进行功能、负载和压力测试。JMeter 支持多种协议和技术,包括 HTTP, HTTPS, FTP 和 WebSocket 等。通过模拟大量并发用户访问来评估应用程序的表现1。 jmeter -n -t testp…...
项目中分库分表的分布式ID如何生成
分库分表与分布式ID生成在Java项目中的应用 在大规模的分布式系统中,数据库表和数据量的增大可能会导致单个数据库或单个表的性能瓶颈。为了解决这个问题,我们通常使用分库分表来进行数据的水平切分和垂直切分。同时,在分布式环境中…...
用xarray解析高程数据时,Python报错:FileNotFoundError: [Errno 2] No such file or directory
问题: 用xarray解析高程数据时,Python报错:FileNotFoundError: [Errno 2] No such file or directory。 但是该文件时存在的,用panoply工具也是可以正常打开查看。 产生原因: 文件路径中存在中文,导致出现此问题。 …...
标准SαS分布的模拟脉冲噪声
标准SαS分布(Standard SαS Distribution)是一种用于描述脉冲噪声的统计分布,常用于模拟具有重尾特性的脉冲噪声信号。SαS分布是从稳定分布(Stable Distribution)中派生出来的一类分布,具有灵活的形状&am…...
基于STM32设计的自动追光系统(系统资料)
基于STM32设计的自动追光系统 摘要:基于STM32设计的自动追光系统主要由光敏采集电路、单片机核心板电路和步进电机控制电路构成。通过光敏电阻采集环境光强信息,经 STM32 单片机处理后,控制步进电机转动,实现对光源的自动追踪。该系统具有响应速度快、追踪精度较高等优点,…...
成人床垫更新关于 SOR/2016-183 和《纺织品贴标和广告法规》的合规
成人床垫更新关于 SOR/2016-183 和《纺织品贴标和广告法规》的合规性声明 加拿大站成人床垫法规SOR/2016-183是强制性的 。为确保买家安全并遵守相关法规,亚马逊要求所有在加拿大销售的成人床垫必须符合《床垫法规》规定的安全标准,包括SOR/2016-183。此…...
11.编写前端内容|vscode链接Linux|html|css|js(C++)
vscode链接服务器 安装VScode插件 Chinese (Simplified) (简体中⽂) Language Pack for Visual Studio CodeOpen in BrowserRemote SSH 在命令行输入 remote-ssh接着输入 打开配置文件,已经配置好主机 点击远程资源管理器可以找到 右键链接 输入密码 …...
Unity3D 基于 GPU 动画和 Compute Shader 的大批量动画渲染详解
引言 在现代游戏开发中,渲染大量动画角色是一个常见的需求,尤其是在大规模战斗场景、开放世界游戏或 VR/AR 应用中。传统的 CPU 动画计算和渲染方式在面对大批量角色时,往往会遇到性能瓶颈。为了优化性能,开发者可以利用 GPU 的强…...
