废话不多说, 直接从用例开始吧!!!
用例
当前时间加几天和减几天:
Python 中的日期操作可以使用 datetime
模块 和 timedelta
对象来完成。
# -*- 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
日期差计算