封装 Python 时间处理库:创建您自己的 TimeUtil 类

本文介绍了如何封装一个名为TimeUtil的时间处理类,简化Python中处理日期和时间的常见任务,包括时间加减、日期计算、转换等功能,并通过示例展示了其用法。此外,还探讨了实例对象操作与类方法的优缺点。
摘要由CSDN通过智能技术生成

简介

在日常的Python开发中,处理时间和日期的需求是非常常见的。尽管Python内置了 datetime 和 time 模块,但在某些情况下,它们可能不够直观和易用。为了解决这个问题,我们封装一个名为 TimeUtil 的时间处理类,通过提供一组易于使用的方法来简化常见的时间相关任务。在本博客文章中,我们将介绍 TimeUtil 的功能,并通过一些实际示例说明如何在各种场景中使用它。

功能

  1. 时间的加减:TimeUtil 支持在 datetime 对象的基础上增加或减少年份、月份、天数、小时、分钟和秒。
  2. 计算昨天、明天、一周后和一个月后的日期。
  3. 将字符串转换为 datetime 对象。
  4. 将 datetime 对象转换为字符串。
  5. 将时间戳转换为字符串格式的时间。
  6. 将字符串格式的时间转换为时间戳。
  7. 将时间戳转换为 datetime 对象。
  8. 两时间(datetime对象)之差
  9. 计算工作日数

代码封装

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Author: Hui
# @Desc: { 时间工具类模块 }
# @Date: 2022/11/26 16:08

import time
from datetime import datetime
from typing import Union

from dateutil.relativedelta import relativedelta

from enums import TimeFormatEnum

class TimeUtil(object):
    """时间工具类"""

    def __init__(self, datetime_obj: datetime = None, format_str: str = TimeFormatEnum.DateTime.value):
        """
        时间工具类初始化
        Args:
            datetime_obj: 待处理的datetime对象,不传时默认取当前时间
            format_str: 时间格式化字符串
        """
        self.datetime_obj = datetime_obj or datetime.now()
        self.format_str = format_str

    @property
    def yesterday(self) -> datetime:
        """获取昨天的日期"""
        return self.sub_time(days=1)

    @property
    def tomorrow(self) -> datetime:
        """获取明天的日期"""
        return self.add_time(days=1)

    @property
    def week_later(self) -> datetime:
        """获取一周后的日期"""
        return self.add_time(days=7)

    @property
    def month_later(self) -> datetime:
        """获取一个月后的日期"""
        return self.add_time(months=1)

    def add_time(self, years=0, months=0, days=0, hours=0, minutes=0, seconds=0, **kwargs) -> datetime:
        """增加指定时间"""
        return self.datetime_obj + relativedelta(
            years=years, months=months, days=days, hours=hours, minutes=minutes, seconds=seconds, **kwargs
        )

    def sub_time(self, years=0, months=0, days=0, hours=0, minutes=0, seconds=0, **kwargs) -> datetime:
        """减去指定时间"""
        return self.datetime_obj - relativedelta(
            years=years, months=months, days=days, hours=hours, minutes=minutes, secon
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值