python 日期 时间的计算 time

本文介绍如何使用Python进行日期时间的加减运算,包括利用timedelta处理天数与小时数的增减,以及通过自定义函数实现跨月份的计算。此外还提供了一种基于time.localtime()的方法来快速调整年月日时分秒。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

########2018-08-20

        month相加减, 使用datetime.timedelta(days),其中days可以自己先计算出来,代码如下:

def deltaTime(start = None, format = None, months = 0,days = 0, hours = 0):
    #days = None, seconds = None, microseconds = None, milliseconds = None, minutes = None, hours = None, weeks = None
    if start and format:
        start_date = datetime.strptime(start, format)
    else:
        start_date = datetime.now()
    d2 = start_date
    if months:
        d2 = monthdelta(start_date,months)
    elif days or hours:
        d2 = start_date + timedelta(days = days,hours = 0)
    return d2.strftime(format)

def monthdelta(start_date,months):
    for i in range(abs(months)):
        if months > 0:
            days = getMaxDay(start_date.year,start_date.month)
        elif months < 0 :
            days = -getMaxDay(start_date.year,start_date.month)
        start_date = start_date + timedelta(days = days)
    return start_date

def getMaxDay(year,month):
    maxDay = [31,year%100 and (year%4 and 28 or 29) or (year%400 and 28 or 29),31,30,31,30,31,31,30,31,30,31]
    return maxDay[month-1]

 

 

 

#########2018-03-28

    时间的计算python的datetime提供了个timedelta , 函数原型如下, 但其不能计算年 月

datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)   

    那如何简单有效的计算年 月的呢?python的time的localtime等会返回time.struct_time结果,其格式如下,这个类型只能读, 不能直接修改.

time.struct_time(tm_year=2018, tm_mon=3, tm_mday=28, tm_hour=15, tm_min=22, tm_sec=19, tm_wday=2, tm_yday=87, tm_isdst=0)

    所以, 就可以根据time.localtime的返回结果来计算年 月 日 时 分 秒了:

def deltaTime(self,year = 0,month = 0,day = 0,hour = 0,minute = 0,second = 0):
        t = time.localtime()
        return "%04d%02d%02d%02d%02d%02d"%(t.tm_year + year,t.tm_mon + month,t.tm_mday + day,t.tm_hour + hour,t.tm_min + minute,t.tm_sec + second)

使用:

deltaTime(year = -10) #'20080328153606'
deltaTime(year = 10)#'20280328153601'

   可以根据这个方法举一反三, 两个给定时间,时间戳等的计算,返回不同的格式等.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值