Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中两倍百分比之间的差异_Javascript_Jquery_Date_Datetime - Fatal编程技术网

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);