Python 中的日期操作:加几天和减几天

2023-11-15 15:54:44 浏览数 (3)

废话不多说, 直接从用例开始吧!!!

用例

当前时间加几天和减几天:

Python 中的日期操作可以使用 datetime 模块 和 timedelta 对象来完成。

代码语言:javascript复制
# -*- coding: utf-8 -*-
# @Author: Mehaei
# @Date:   2023-11-11 14:31:27
# @Last Modified by:   Mehaei
# @Last Modified time: 2023-11-11 14:31:37
from datetime import datetime, timedelta

# 获取当前日期
current_date = datetime.now()

# 加几天
days_to_add = 5
new_date_after_addition = current_date   timedelta(days=days_to_add)

# 减几天
days_to_subtract = 3
new_date_after_subtraction = current_date - timedelta(days=days_to_subtract)

print("当前日期:", current_date)
print(f"加 {days_to_add} 天后的日期:", new_date_after_addition)
print(f"减 {days_to_subtract} 天后的日期:", new_date_after_subtraction)

时间字符串操作加减:

大多数情况,都需要将一个时间字符串进行日期操作。以下是一个示例,展示如何将时间字符串加上或减去几天:

代码语言:javascript复制
# -*- coding: utf-8 -*-
# @Author: Mehaei
# @Date:   2023-11-11 14:31:27
# @Last Modified by:   Mehaei
# @Last Modified time: 2023-11-11 14:34:47
from datetime import datetime, timedelta

# 初始时间字符串
date_string = "2023-11-01"

# 将时间字符串解析为日期对象
date_object = datetime.strptime(date_string, "%Y-%m-%d")

# 加几天
days_to_add = 7
new_date_after_addition = date_object   timedelta(days=days_to_add)

# 减几天
days_to_subtract = 3
new_date_after_subtraction = date_object - timedelta(days=days_to_subtract)

print("初始日期字符串:", date_string)
print(f"加 {days_to_add} 天后的日期:", new_date_after_addition)
print(f"减 {days_to_subtract} 天后的日期:", new_date_after_subtraction)

这个示例会将时间字符串解析为日期对象,然后使用 timedelta 对象执行加减操作。

封装一下代码

代码语言:javascript复制
# -*- coding: utf-8 -*-
# @Author: Mehaei
# @Date:   2023-11-11 14:31:27
# @Last Modified by:   Mehaei
# @Last Modified time: 2023-11-11 14:46:05
from datetime import datetime, timedelta


def dateOperations(date=None, timedelta_kwargs=None):
    """
    日期操作工具
    :param date: datetime or date str
    :param timedelta_kwargs: date operations kwargs
    """
    if timedelta_kwargs and not isinstance(timedelta_kwargs, dict):
        raise ValueError("参数错误")
    if date:
        if isinstance(date, str):
            # 将时间字符串解析为日期对象
            date = datetime.strptime(date, "%Y-%m-%d")
        elif isinstance(date, datetime):
            pass
        else:
            raise TypeError("日期类型错误")
    else:
        date = datetime.now()
    new_date_after_addition = date   timedelta(**timedelta_kwargs)
    return str(new_date_after_addition)


# 模块使用
# 使用当前时间
print(f"当前时间: {str(datetime.now())[:10]}  3天 = :", dateOperations(timedelta_kwargs={"days": 3}))
print(f"当前时间: {str(datetime.now())[:10]} -3天 = :", dateOperations(timedelta_kwargs={"days": -3}))


# 指定日期字符串
print(f"时间: 2023-11-01  3天 = :", dateOperations("2023-11-01", timedelta_kwargs={"days": 3}))
print(f"时间: 2023-11-01  3天 = :", dateOperations("2023-11-01", timedelta_kwargs={"days": -3}))

输出

代码语言:javascript复制
当前时间: 2023-11-11  3天 = : 2023-11-14 14:46:05.865698
当前时间: 2023-11-11 -3天 = : 2023-11-08 14:46:05.865731
时间: 2023-11-01  3天 = : 2023-11-04 00:00:00
时间: 2023-11-01  3天 = : 2023-10-29 00:00:00
[Finished in 0.1s]

又完了

这个小操作在日常开发中经常用到, 所以记录一下, 随便给封装一下, 下次用的时候可以直接cv

日期差计算

0 人点赞