$a = 01:04:06:02:55:28
$b = 03:04:06:02:54:34
//format("%Y:%M:%D:%H:%I:%S")
我想找到这两者的平均值。
在这种情况下,$ a是完成任务1所花费的时间,$ b是完成任务2所花费的时间。现在我想知道该人完成两项任务所花费的平均时间。
答案 0 :(得分:0)
您可以计算两个时间戳的平均值。的 live demo 强>
<?php
$a = '01:04:06:02:55:28';
$b = '03:04:06:02:54:34';
$aTimestamp = DateTime::createFromFormat('m:d:y:h:i:s', $a, new DateTimeZone('Europe/Warsaw'))->getTimestamp();
$bTimestamp = DateTime::createFromFormat('m:d:y:h:i:s', $b, new DateTimeZone('Europe/Warsaw'))->getTimestamp();
echo date("m:d:y:h:i:s", ($aTimestamp + $bTimestamp)/2);
答案 1 :(得分:0)
如果您的格式与持续时间相对应而不是确切日期,则应使用timedelta对象(请参阅下面的live demo或代码,假设1年= 365天,1个月= 30天)。请注意,timedelta对象只接受几天(而不是几个月或几年,避免歧义)。 Timedelta对象允许算术运算(参见https://docs.python.org/2.4/lib/datetime-timedelta.html)
日期时间对象假设一个日历,这意味着它们将使用两个点之间的月和年的实际持续时间(月份范围为28-31,可能是闰年而不是“标准”持续时间)。
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
if ($('div:contains("%")').length > 0){
var divTxt = $('div:contains("%")').text();
alert(divTxt);
}
});
</script>
</head>
<body>
<div guid="60b758f8-62e7-42cc-ab66-5eca80642f35">100%</div>
</body>
</html>
或者,您可以只计算每个字段的平均值。但我认为0.5周,0个月,0天而不是0年6个月会很奇怪。但是,如果这是一个有效的选项,代码会更容易:
from datetime import timedelta
a = "01:04:06:02:55:28"
b = "03:04:06:02:54:34"
(y,mo,d,h,mi,s) = a.split(":");
tda = timedelta(days=int(y)*365+int(mo)*30+int(d), hours=int(h), minutes=int(mi), seconds=int(s));
(y,mo,d,h,mi,s) = b.split(":");
tdb = timedelta(days=int(y)*365+int(mo)*30+int(d), hours=int(h), minutes=int(mi), seconds=int(s));
print("a: " + str(tda))
print("b: " + str(tdb))
print("average: " + str((tda+tdb)/2))
# now we only need to format the output as needed
avgtd = (tda+tdb)/2
avgy = avgtd.days/365
avgm = (avgtd.days - avgy*365) / 30
avgd = (avgtd.days - avgy*365 - avgm*30)
avghou = avgtd.seconds / 3600
avgmin = (avgtd.seconds - avghou*3600) / 60
avgsec = (avgtd.seconds - avghou*3600 - avgmin*60)
print("average: " + str(avgtd))
print ("{}:{}:{}:{}:{}:{}".format(avgy,avgm,avgd,avghou,avgmin, avgsec))