Django—实现一个小需求《日期相减、时间差转化为天时分秒》

日期相减、时间差转化为天时分秒

首先要将两个时间相减,计算时间差

# 举个栗子
from datetime import *
str_time = '2021-04-13 15:51:43'
# 将str时间转化为datetime格式
origin_time = datetime.strptime(str_time,'%Y-%m-%d %H:%M:%S')
now_time = datetime.now()
# 计算
total_time = now_time - origin_time
type(total_time)
# <class 'datetime.timedelta'> 这就是timedelta了 专门进行时间加减的类

上述代码介绍了时间差的计算,接下来看时间差转化为天时分秒

def formatTime2Custom(allTime):
    day = 24 * 60 * 60
    hour = 60 * 60
    min = 60
    if allTime < 60:
        return "%d秒" % math.ceil(allTime)
    elif allTime > day:
        days = divmod(allTime, day)
        return "%d天%s" % (int(days[0]), changeTime(days[1]))
    elif allTime > hour:
        hours = divmod(allTime, hour)
        return '%d小时%s' % (int(hours[0]), changeTime(hours[1]))
    else:
        mins = divmod(allTime, min)
        return "%d分钟%d秒" % (int(mins[0]), math.ceil(mins[1]))
if __name__ = '__main__':
	allTime = total_time.seconds # 这个看下边的解释
	res = formatTime2Custom(allTime )

解释total_time.seconds

class timedelta:
...
	days += weeks*7
	seconds += minutes*60 + hours*3600
	microseconds += milliseconds*1000

通过计算得到的 total_time是timedelta类 其中包含这三个属性 我们可以取秒进行转化

完整代码

def formatTime2Custom(allTime):
    day = 24 * 60 * 60
    hour = 60 * 60
    min = 60
    if allTime < 60:
        return "%d秒" % math.ceil(allTime)
    elif allTime > day:
        days = divmod(allTime, day)
        return "%d天%s" % (int(days[0]), changeTime(days[1]))
    elif allTime > hour:
        hours = divmod(allTime, hour)
        return '%d小时%s' % (int(hours[0]), changeTime(hours[1]))
    else:
        mins = divmod(allTime, min)
        return "%d分钟%d秒" % (int(mins[0]), math.ceil(mins[1]))
if __name__ = '__main__':
	from datetime import *
	str_time = '2021-04-13 15:51:43'
	origin_time = datetime.strptime(str_time,'%Y-%m-%d %H:%M:%S')
	now_time = datetime.now()
	total_time = now_time - origin_time
	res = formatTime2Custom(total_time.seconds)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值