【Python】日期加减(获取前N天/后N天日期)

 

复制代码
import datetime


class DateTool:
    @staticmethod
    def offset(date_format, offset_type, count, data=None):
        """
        日期偏移(前N天、后N天)
        @param date_format: 格式(如:%Y-%m-%d %H:%M:%S)
        @param offset_type: 偏移类型(Q-向前偏移 即前N天,H-向后偏移 即后N天)
        @param count: 偏移天数
        @param data: 偏移基准日期(如:2020-11-14 19:48:51) 若为None则当前日期
        @return: 偏移后的日期
        """
        # 时间加减
        # 获取当前日期
        if data is None:
            data = datetime.datetime.now().strftime(date_format)
        # 将时间字符串转换为 datetime 格式的时间
        today = datetime.datetime.strptime(data, date_format)
        # 计算偏移量
        if offset_type == 'Q':
            offset = datetime.timedelta(days=-count)
        elif offset_type == 'H':
            offset = datetime.timedelta(days=+count)
        else:
            print(f'偏移类型错误,预期:“Q”或“H”,实际:{offset_type}')
        # 获取修改后的时间并格式化
        re_date = (today + offset).strftime(date_format)
        return re_date


if __name__ == '__main__':
    print(DateTool.offset('%Y%m%d', 'Q', 3))  # 20210823  (备注:今天是8.26日)
    print(DateTool.offset('%Y%m%d', 'H', 3, '20210829'))  # 20210901
复制代码

 

posted @   淡怀  阅读(1280)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
历史上的今天:
2019-08-26 【IDEA】+ 代码折叠与展开
点击右上角即可分享
微信分享提示