Python 日期处理工具类

工具类文件名称:Helper.py

import datetime

'''
    日期处理工具类
'''
class DateHelper(object):
    '''
        获取指定日期范围内的日期列表
    '''
    def get_date_list(self, date_start, date_end):
        datestart = datetime.datetime.strptime(date_start, '%Y-%m-%d')
        dateend = datetime.datetime.strptime(date_end, '%Y-%m-%d')

        list = []
        while datestart <= dateend:
            list.append(datestart.strftime('%Y-%m-%d'))
            datestart += datetime.timedelta(days=1)
        return list

    '''
        获取指定日期范围内的自然周以及自然周的日期列表
        跨年的日期是否合并: is_merge
    '''
    def get_week_list(self, date_start, date_end, is_merge=True):
        list = {}
        datestart = datetime.datetime.strptime(date_start, '%Y-%m-%d')
        dateend = datetime.datetime.strptime(date_end, '%Y-%m-%d')

        while datestart <= dateend:
            week = str(datestart.strftime('%Y-%W'))
            if week not in list:
                list[week] = []
            list[week].append(datestart.strftime('%Y-%m-%d'))
            datestart += datetime.timedelta(days=1)

        if False == is_merge:
            return list
        else:
            flag = ''
            _list = {}

            for week in list:
                if date_start in list[week] or date_end in list[week]:
                    _list[week] = list[week]
                else:
                    if len(list[week]) == 7:
                        _list[week] = list[week]
                    else:
                        if flag not in _list:
                            _list[week] = list[week]
                            flag = week
                        else:
                            _list[flag] = _list[flag] + list[week]
                            flag = ''
            return _list

    '''
        获取指定日期范围内的自然月及每个自然月里面的日期列表
    '''
    def get_month_list(self, date_start, date_end):
        list = {}
        datestart = datetime.datetime.strptime(date_start, '%Y-%m-%d')
        dateend = datetime.datetime.strptime(date_end, '%Y-%m-%d')
        while datestart <= dateend:
            month = datestart.strftime('%Y-%m')
            if month not in list:
                list[month] = []
            list[month].append(datestart.strftime('%Y-%m-%d'))
            datestart += datetime.timedelta(days=1)
        return list

if __name__ == '__main__':
    pass

应用 : demo.py

from Helper import DateHelper

class Test(object):

    def run(self):
        logic = DateHelper()
        list = logic.get_week_list('2019-01-01', '2021-01-27')
        for week in list:
            print('week is %s' % (week))
            print(
                list[week]
            )
        print(
            '--------------------------------------------------------'
        )
        list = logic.get_month_list('2019-01-01', '2021-01-27')
        for month in list:
            print('month is %s' % (month))
            print(
                list[month]
            )

def run():
    app = Test()
    app.run()


if __name__ == '__main__':
    run()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值