python几个有用的日期相关函数-月份的加减

1、根据日期获取日期范围列表

def dateRange(beginDate, endDate):
    dates = []
    var_month = datetime.datetime.strptime(beginDate, "%Y-%m-%d")
    date = beginDate[:]
    while date <= endDate:
        dates.append(date)
        var_month = var_month + datetime.timedelta(1)
        date = var_month.strftime("%Y-%m-%d")
    return dates


2、根据两月份获取月份范围列表

def monthRange(beginMonth, endMonth):
    months = set([])
    mt = datetime.datetime.strptime(beginMonth, "%Y-%m")
    month = beginMonth[:]
    while month <= endMonth:
        months.add(month)
        mt = mt + datetime.timedelta(1)
        month = mt.strftime("%Y-%m")
    monthList = sorted(months)
    return monthList


3、月份相加减

def months_addsub(var_month,months):
    month = var_month.month - 1 + months
    year = var_month.year + month / 12
    month = month % 12 + 1
    day = min(var_month.day,calendar.monthrange(year,month)[1])
    var_month = var_month.replace(year=year, month=month, day=day)
    return str(var_month.replace(year=year, month=month, day=day))


4、获取昨天日期

def getYesterday():
    today = datetime.date.today()
    oneday = datetime.timedelta(days=1)
    yesterday = today - oneday
    return yesterday


5、综合使用示例
 

# -*- coding=utf-8 -*-
import warnings
import calendar
import datetime

warnings.filterwarnings("ignore")

def dateRange(beginDate, endDate):
    dates = []
    var_month = datetime.datetime.strptime(beginDate, "%Y-%m-%d")
    date = beginDate[:]
    while date <= endDate:
        dates.append(date)
        var_month = var_month + datetime.timedelta(1)
        date = var_month.strftime("%Y-%m-%d")
    return dates

def monthRange(beginMonth, endMonth):
    months = set([])
    mt = datetime.datetime.strptime(beginMonth, "%Y-%m")
    month = beginMonth[:]
    while month <= endMonth:
        months.add(month)
        mt = mt + datetime.timedelta(1)
        month = mt.strftime("%Y-%m")
    monthList = sorted(months)
    return monthList

def months_addsub(var_month,months):
    month = var_month.month - 1 + months
    year = var_month.year + month / 12
    month = month % 12 + 1
    day = min(var_month.day,calendar.monthrange(year,month)[1])
    var_month = var_month.replace(year=year, month=month, day=day)
    return str(var_month.replace(year=year, month=month, day=day))

def getYesterday():
    today = datetime.date.today()
    oneday = datetime.timedelta(days=1)
    yesterday = today - oneday
    return yesterday

# 数据测试
runDay_list = dateRange(beginDate='2019-05-29', endDate='2019-06-03')
runMonth_list = monthRange(beginMonth='2018-09', endMonth='2019-05')

print runDay_list
print runMonth_list

pt_month='2019-06'
pt_month_frist = pt_month+'-01'
pt_month_frist_format = datetime.date(int(pt_month_frist[0:4]), int(pt_month_frist[5:7]), int(pt_month_frist[8:10]))
pt_month_next = months_addsub(pt_month_frist_format, -9)[0:7]
print pt_month_next

print str(getYesterday())

结果数据:

/usr/bin/python /Users/nisj/PycharmProjects/BiDataProc/love/x.py
['2019-05-29', '2019-05-30', '2019-05-31', '2019-06-01', '2019-06-02', '2019-06-03']
['2018-09', '2018-10', '2018-11', '2018-12', '2019-01', '2019-02', '2019-03', '2019-04', '2019-05']
2018-09
2019-07-01

Process finished with exit code 0

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值