javascript中两倍百分比之间的差异
比如说:javascript中两倍百分比之间的差异,javascript,jquery,date,datetime,Javascript,Jquery,Date,Datetime,比如说: var timeone = "01:23:00"; // time elapsed var timetwo = "07:34:00"; // total time 那么,我如何计算总时间和已用时间之间的差异,并计算出其中的百分比呢 更新 尝试过这个,但在控制台中我看到“NaN” “01:23:00”仅包含时间部分,不是可以使用Date.parse()解析的有效格式。 要使其正确解析,请在解析之前为伪日期部分添加前缀 例如:Date.parse(“01-01-2000”+TimeLf
var timeone = "01:23:00"; // time elapsed
var timetwo = "07:34:00"; // total time
那么,我如何计算总时间和已用时间之间的差异,并计算出其中的百分比呢
更新
尝试过这个,但在控制台中我看到“NaN”
“01:23:00”
仅包含时间部分,不是可以使用Date.parse()解析的有效格式。
要使其正确解析,请在解析之前为伪日期部分添加前缀
例如:Date.parse(“01-01-2000”+TimeLft.text())
由于您希望获得一个百分比值,因此需要从结果中减去为日期部分(01-01-2000)添加的秒数:
i、 e
并非所有浏览器(即lt 9)都正确支持第一个Date.parse()
,因此我建议您使用Date对象.set*()
函数。第二,因为你们的时间并没有任何日期,你们需要根据一天的开始来计算。这应该可以工作并且是浏览器安全的
由于您使用的是经过的时间,而不是一天中的时间,因此我建议避免使用
Date
对象。这是为了一个不同的目的
如果您可以保证输入是您指定的hour:minute:second
格式,则只需拆分部分,以将总秒数作为单个整数计算。然后,您可以将它们除以以获得百分比,如下所示:
function totalSeconds(time){
var parts = time.split(':');
return parts[0] * 3600 + parts[1] * 60 + parts[2];
}
var timeone = "01:23:00"; // time elapsed
var timetwo = "07:34:00"; // total time
var pct = (100 * totalSeconds(timeone) / totalSeconds(timetwo)).toFixed(2);
我已将结果改为小数点后两位,但如果您愿意,可以调整
.你做了什么努力?@pr1nc3其他两个输出是什么?@Tiagomariho不是我,即lt 9。我知道这是因为我自己的经验。此外,还有许多证据支持这一事实,仅举几个例子。
var dayOffset = Date.parse("01-01-2000 00:00:00");
var left = Date.parse("01-01-2000 " + TimeLft.text()) - dayOffset;
var total = Date.parse("01-01-2000 " + DealTotalTm) - dayOffset;
var percentChange = (TimeLeft/Totaltime)*100;
var baseDate = new Date();
timeElapsed = "01:23:00", // time elapsed
timeElapsedParts = timeElapsed.split(':'),
timeElapsedDate = new Date(),
timeElapsedInMilliseconds = 0,
timeTotal = "07:34:00", // total time
timeTotalParts = timeTotal.split(':'),
timeTotalDate = new Date(),
timeTotalInMilliseconds = 0,
timeDifferenceInPercentage = 0;
baseDate.setHours(0);
baseDate.setMinutes(0);
baseDate.setSeconds(0);
baseDate.setMilliseconds(0);
timeElapsedDate.setHours(timeElapsedParts[0]);
timeElapsedDate.setMinutes(timeElapsedParts[1]);
timeElapsedDate.setSeconds(timeElapsedParts[2]);
timeElapsedDate.setMilliseconds(0);
timeTotalDate.setHours(timeTotalParts[0]);
timeTotalDate.setMinutes(timeTotalParts[1]);
timeTotalDate.setSeconds(timeTotalParts[2]);
timeTotalDate.setMilliseconds(0);
timeElapsedInMilliseconds = (timeElapsedDate.getTime() - baseDate.getTime());
timeTotalInMilliseconds = (timeTotalDate.getTime() - baseDate.getTime());
timeDifferenceInPercentage = (Math.round(((timeTotalInMilliseconds - timeElapsedInMilliseconds) / timeTotalInMilliseconds) * 10000) / 100);
console.log(timeDifferenceInPercentage + '%');
function totalSeconds(time){
var parts = time.split(':');
return parts[0] * 3600 + parts[1] * 60 + parts[2];
}
var timeone = "01:23:00"; // time elapsed
var timetwo = "07:34:00"; // total time
var pct = (100 * totalSeconds(timeone) / totalSeconds(timetwo)).toFixed(2);