zoukankan      html  css  js  c++  java
  • python 自己写的关于时间很有用的函数

    输入日期,以及频率,比如3周,6月,输出日期前3周,6月的日期

    from datetime import datetime
    from datetime import timedelta
    import calendar
    
    #输入日期,以及频率默认1周(日、周、月或者年),输出往前日、周、月、年的日期
    def get_pre_date(Date, fre = '1w'):
        end_date = datetime.strptime(Date, '%Y%m%d')
        if fre.endswith('w'):
            start_date = end_date - timedelta(int(fre[: -1]) * 7)
            start_date = start_date.strftime('%Y%m%d')
        elif fre.endswith('d'):
            start_date = end_date - timedelta(int(fre[: -1]))
            start_date = start_date.strftime('%Y%m%d')
        elif fre.endswith('m'):
            start_date_year = end_date.year - int(fre[: -1])// 12
            #余数
            remainder = int(fre[: -1])% 12
            delta_month = end_date.month - remainder        
            if delta_month <= 0:
                start_date_year -= 1
                start_date_month = 12 + remainder
            else:
                start_date_month = end_date.month - remainder
            #判断日子,通过月份来判断
            delta_day =calendar.monthrange(end_date.year, end_date.month)[1] - end_date.day
            start_date_day = calendar.monthrange(start_date_year, start_date_month)[1] - delta_day
            start_date = str(start_date_year) + str(start_date_month).zfill(2) + str(start_date_day)
        elif fre.endswith('y'):
            start_date_year = end_date.year - int(fre[: -1])
            start_date = str(start_date_year) + str(end_date.month).zfill(2) + str(end_date.day)
        else:
            print('输入:"nd", "nw", "nm", "ny",其中"n"是数字
    ')
        return start_date

    来运行一下,获取2015年8月31号前16月的具体日期

    get_pre_date('20150831', '16m')

    输出如下,是2014年4月30号

  • 相关阅读:
    阿里P7架构师是如何解决跨域问题的!你有遇到吗?
    Node.js Express 框架
    用户管理 之 Linux 系统中的超级权限的控制
    [转] Exchange 2013 安装部署详解
    Clustered和Nonclustered Indexes 各自得特点和区别及长短处
    配置IIS5.5/6.0 支持 Silverlight
    redis模块使用
    redis介绍及安装
    linux上安装redis、远程配置及开机启动
    远程连接linux、配置SSHD
  • 原文地址:https://www.cnblogs.com/Mr-ZeroW/p/7873298.html
Copyright © 2011-2022 走看看