文章目录
日期相减、时间差转化为天时分秒
首先要将两个时间相减,计算时间差
# 举个栗子
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)