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号

  • 相关阅读:
    cf 1179 C
    P5055 【模板】可持久化文艺平衡树 可持久化fhqtreap
    bzoj4605: 崂山白花蛇草水 权值线段树套KDtree
    luoguP4173 残缺的字符串 FFT
    [HNOI2016]序列 CDQ+DP
    [TJOI2017]不勤劳的图书管理员
    loj2058 「TJOI / HEOI2016」求和 NTT
    bzoj4503: 两个串
    luoguP4721 【模板】分治 FFT
    [Cqoi2016]K远点对 K-Dtree
  • 原文地址:https://www.cnblogs.com/Mr-ZeroW/p/7873298.html
Copyright © 2011-2022 走看看