python,求一个比较好的两个日期时间计算时间差的函数
如题,python,输入两个日期时间,获得两个日期时间相差的年月日时分秒。要考虑闰年、闰月等情况,求比较好的函数,谢谢。 这种问题,最好去悬赏区,这里不会有人给你免费解答的 你试试dateutil模块 我现在写成这样。
import datetime
start_time = datetime.datetime(2004, 10, 20, 15, 15, 00)
print('开始时间:', start_time)
end_time = datetime.datetime.now()
print('结束时间:', end_time)
print('相差:', (end_time - start_time))
输出是这样:
开始时间: 2004-10-20 15:15:00
结束时间: 2021-06-06 12:06:03.751476
相差: 6072 days, 20:51:03.751476
我希望输出是这样:
开始时间: 2004-10-20 15:15:00
结束时间: 2021-06-06 12:06:03.751476
相差: X年X月X日 X时X分X秒
不知道要怎么改,请指教,谢谢。 你这个问题本身就是有问题的,时间之差就是一个固定的值,怎么也不能转换成某一天。。 howyouxiu 发表于 2021-6-6 12:19
你这个问题本身就是有问题的,时间之差就是一个固定的值,怎么也不能转换成某一天。。
我希望时获得相差:16年10个月20天 8小时5分钟20秒
这样的结果。 你这个就是年减年,月减月,日减日呗,除了年减年傻瓜式减一下,剩下的按当看时间算即可,不要想得太复杂 其实你的问题里有个问题
相差!=间隔 先转成时间戳,计算差值,再转成时间
#!/usr/bin/python3.7
# -*- coding: UTF-8 -*-
import time
start_time = '2012-05-26 20:00:00'
start_time_s = int((time.mktime(time.strptime(start_time, "%Y-%m-%d %H:%M:%S"))))
print('开始时间', start_time)
# print('开始的时间戳', start_time_s)
end_time_s = time.time()
print('结束时间', (time.strftime('%Y-%m-%d %H:%M:%S ', time.localtime(end_time_s))))
swap_time = end_time_s - start_time_s
# print(swap_time)
m, s = divmod(swap_time, 60)
h, m = divmod(m, 60)
d, h = divmod(h, 24)
print('相差:%d天%02d小时%02d分%02d秒' % (d, h, m, s)) import datetime
def days_of_month(year, month):
if month == 1 or month == 3 or month == 5 or month == 7 or month == 8 or month == 10 or month == 12:
return 31
elif month == 4 or month == 6 or month == 9 or month == 11:
return 30
elif month == 2 and ((year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)):
return 29
else:
return 28
start_time = datetime.datetime(2004, 2, 20, 15, 15, 00)
print('开始时间:', start_time)
end_time = datetime.datetime.now()
print('结束时间:', end_time)
if end_time < start_time:
end_time, start_time = start_time, end_time
delta = end_time - start_time
y = end_time.year - start_time.year
m = end_time.month - start_time.month
d = end_time.day - start_time.day
h = end_time.hour - start_time.hour
mi = end_time.minute - start_time.minute
sec = end_time.second - start_time.second
if sec < 0:
mi -= 1
sec += 60
if mi < 0:
h -= 1
mi += 60
if h < 0:
d -= 1
h += 24
if d < 0:
m -= 1
d += min(days_of_month(end_time.year, end_time.month), days_of_month(start_time.year, start_time.month))
if m < 0:
y -= 1
m += 12
print(f'相差:{y}年 {m}月 {d}天 {h}时 {mi}分 {sec}秒')
页:
[1]
2