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

全面掌握Python时间处理

全面掌握Python时间处理

flyfish

  • datetime: 最适合处理日期和时间,支持创建时间对象、格式化时间、计算时间差等。
  • time: 提供了获取时间戳、将时间戳转换为本地时间、暂停程序执行等功能。
  • timeit: 主要用于性能测试,帮助开发者了解某段代码的执行效率。

基础知识

在编程中,“时间”通常有两种主要形式:

  1. 时间点(Time Point):指某一特定时刻,如“2025年2月19日 11时17分”。
  2. 时间段(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 timeit

def 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)
%H24小时制的小时数(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 datetime

now = datetime.now()
formatted_time = now.strftime("%Y-%m-%d %H:%M:%S")
print("格式化后的时间:", formatted_time)

定时器实现

定时器可以通过多种方式实现,下面是几种常见的方式:

使用 time.sleep()

这是一个简单的延时方法,适合用于短时间的暂停。

import time

def timer(seconds):
    print(f"计时开始,等待 {seconds} 秒...")
    time.sleep(seconds)
    print("计时结束!")

timer(5)  # 等待5秒
使用 threading.Timer

这个方法适合需要在后台运行定时任务的情况。

import threading

def 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 time

scheduler = 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 calendar

cal = calendar.month(2025, 2)  # 获取2025年2月的日历
print("以下输出2025年2月份的日历:")
print(cal)
判断是否为闰年
import calendar

year = 2025
if calendar.isleap(year):
    print(f"{year} 是闰年")
else:
    print(f"{year} 不是闰年")
计算两个日期之间的差值
from datetime import datetime

date1 = datetime(2025, 2, 19)
date2 = datetime(2025, 2, 28)

difference = date2 - date1
print(f"日期差: {difference.days} 天")

http://www.kler.cn/a/553944.html

相关文章:

  • DeepSeek 云原生分布式部署的深度实践与疑难解析—— 从零到生产级落地的全链路避坑指南
  • 跳表(Skip List)详解
  • 基于YOLOv8的人脸识别系统
  • AI驱动的精准教育:个性化学习新时代
  • 提升接口性能之异步
  • 在ubuntu上用Python的openpyxl模块操作Excel的案例
  • 深度学习之自然语言处理CBOW预测及模型的保存
  • 深度神经网络终极指南:从数学本质到工业级实现(附Keras版本代码)
  • 二级指针略解【C语言】
  • mac下使用webstorm监听less文件自动生成wxss文件
  • 内核数据结构用法(2)list
  • Kubernetes: Kustomize 进阶, 使用 Patch 精准操控 ConfigMap 多行文本,实现配置参数化
  • 【JavaWeb10】服务器渲染技术 --- JSP
  • 51c深度学习~合集2
  • Rust中的Trait与Trait Bounds
  • C++时之律者的代码掌控:日期类计算器万字详解
  • 仿 Sora 之形,借物理模拟之技绘视频之彩
  • 嵌入式面试高频面试题:嵌入式系统调试方法大全
  • Mysql基础语句
  • LeetCode 1299.将每个元素替换为右侧最大元素:倒序遍历,维护最大值,原地修改