Python 日期处理

下面的代码是根据业务需求整理的几个处理日期的方法。

import datetime


class DateTime(object):
    def __init__(self, input_date):
        self.input_date = input_date

    # input_date 的前一天
    # 例如:输入的input_date = datetime.datetime(2018, 1, 17),输出的结果为20180116
    def getYesterday(self):
        date = self.input_date - datetime.timedelta(days=1)
        yesterday = date.strftime('%Y%m%d')
        #print(yesterday)
        return yesterday

    # input_date 的年月
    # 例如:输入的input_date = datetime.datetime(2018, 1, 17),输出的结果为201801
    def getMonth(self):
        month = self.input_date.strftime('%Y%m')
        #print(month)
        return month

    # input_date 的上个月
    # 例如,输入的input_date = datetime.datetime(2018, 1, 17),输出结果为201712
    def getLastMonth(self):
        month = self.input_date.month
        year = self.input_date.year
        if(month == 1):
            month = 12
            year = year - 1
        else:
            month = month - 1
        day = datetime.datetime(year, month, 1)
        last_month = day.strftime('%Y%m')
        #print(last_month)
        return last_month

    # input_date 的本月的第一天
    # 例如:输入的input_date = datetime.datetime(2018, 1, 17),输出的结果为20180101
    def getMonth1stday(self):
        month = self.input_date.month
        year = self.input_date.year
        month1stday = datetime.datetime(year, month, 1)
        month1stday = month1stday.strftime('%Y%m%d')
        #print(month1stday)
        return month1stday

    # input_date 的当月的第N天
    # 例如:输入的input_date = datetime.datetime(2018, 1, 17),n = 3, 输出的结果为20171203
    def getMonthNday(self, n):
        month = self.input_date.month
        year = self.input_date.year
        monthNday = datetime.datetime(year, month, 1)
        monthNday = monthNday + datetime.timedelta(days=(n-1))
        monthNday = monthNday.strftime('%Y%m%d')
        #print(monthNday)
        return monthNday


    # input_date 的上月的第N天
    # 例如:输入的input_date = datetime.datetime(2018, 1, 17),输出结果为20180101
    def getLastMonthNday(self, n):
        month = self.input_date.month
        year = self.input_date.year
        if(month == 1):
            month = 12
            year = year - 1
        else:
            month = month - 1
        lastMonthNday = datetime.datetime(year, month, 1)
        lastMonthNday = lastMonthNday + datetime.timedelta(days=(n-1))
        lastMonthNday = lastMonthNday.strftime('%Y%m%d')
        #print(lastMonthNday)
        return lastMonthNday

    # 如果input_date的天的数字大于等于输入的n,则输出input_date的年月和n日.如果input_date的天的数字小于输入的n,则输出input_date的上个月和n日
    # 例如:我们输入input_date = datetime.datetime(2018, 1, 17),n = 12, 则输出结果为20180112
    # 我们如果输入input_date = datetime.datetime(2018, 1, 17), n = 22, 则输出结果为20171222
    def getAccountday(self, n):
        month = self.input_date.month
        year = self.input_date.year
        today_day = self.input_date.day
        #today = datetime.datetime.today()
        #today_day = today.day
        if(today_day >= n):
            accountday = datetime.datetime(year, month, 1)
            accountday = accountday + datetime.timedelta(days=(n-1))
            accountday = accountday.strftime('%Y%m%d')
        else:
            if(month == 1):
                month = 12
                year = year - 1
            else:
                month = month - 1
            accountday = datetime.datetime(year, month, 1)
            accountday = accountday + datetime.timedelta(days=(n-1))
            accountday = accountday.strftime('%Y%m%d')
        #print(accountday)
        return accountday

    # 如果input_date的天的数字小于等于输入的n,则输出input_date的前一天;如果input_date的天的数字小于n,则输出input_date的年月和n-1日。
    # 例如:我们输入input_date = datetime.datetime(2018, 1, 17),n = 12, 则输出结果为20180111
    # 我们如果输入input_date = datetime.datetime(2018, 1, 17), n = 22, 则输出结果为20180116
    def getLastDLday(self, n):
        month = self.input_date.month
        year = self.input_date.year
        #today = datetime.datetime.today()
        today_day = self.input_date.day
        if(today_day <= n):
            lastDLday = self.getYesterday()
        else:
            lastDL1stday = datetime.datetime(year, month, 1)
            lastDLday = lastDL1stday + datetime.timedelta(days=(n-2))
            lastDLday = lastDLday.strftime('%Y%m%d')
        #print(lastDLday)
        return lastDLday

    # 如果input_date的天数-1等于n,则输出input_date的年月和n-1日;如果input_date的天数不等于n,则输出input_date的前一天
    # 例如:输入input_date = datetime.datetime(2018, 1, 13),n = 12, 则输出20180111
    # 输入的input_date = datetime.datetime(2018, 1, 16), n = 22, 则输出20180115
    def getDLday(self, n):
        month = self.input_date.month
        year = self.input_date.year
        today_day = self.input_date.day
        if((today_day - 1) == n):
            DL1stday = datetime.datetime(year, month, 1)
            DLday = DL1stday + datetime.timedelta(days=(n-2))
            DLday = DLday.strftime('%Y%m%d')
        else:
            DLday = self.getYesterday()
        #print(DLday)
        return DLday


if __name__ == '__main__':
    input_date = datetime.datetime(2018, 1, 17)
    date = DateTime(input_date)
    date.getLastMonthNday(12)
    date.getLastMonth()
    date.getMonth1stday()
    date.getAccountday(12)
    date.getMonthNday(12)
    date.getLastMonthNday(3)
    date.getYesterday()
    date.getDLday(22)
    date.getLastDLday(22)

后续更新中。。。。

Python提供了强大的日期和时间处理模块,名为datetime。它可以用于处理日期、时间、时间间隔和日期时间的计算。下面是Python日期处理的一些常用功能: 1. 获取当前日期和时间: 使用datetime模块的datetime类可以获取当前日期和时间。例如: ```python from datetime import datetime now = datetime.now() print(now) ``` 2. 格式化日期和时间: 使用strftime()方法可以将日期和时间格式化为指定的字符串。例如: ```python from datetime import datetime now = datetime.now() formatted_date = now.strftime("%Y-%m-%d %H:%M:%S") print(formatted_date) ``` 3. 解析字符串为日期和时间: 使用strptime()方法可以将字符串解析为日期和时间对象。例如: ```python from datetime import datetime date_string = "2022-01-01" date = datetime.strptime(date_string, "%Y-%m-%d") print(date) ``` 4. 日期和时间计算: 可以对日期和时间进行加减操作,计算出新的日期和时间。例如: ```python from datetime import datetime, timedelta now = datetime.now() one_week_later = now + timedelta(weeks=1) print(one_week_later) ``` 5. 获取日期和时间的各个部分: 可以使用date()、time()datetime()方法获取日期和时间对象的各个部分,如年、月、日、时、分、秒等。例如: ```python from datetime import datetime now = datetime.now() year = now.year month = now.month day = now.day hour = now.hour minute = now.minute second = now.second ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值