Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.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 - Fatal编程技术网

Javascript 与今天相比,两个日期之间的百分比

Javascript 与今天相比,两个日期之间的百分比,javascript,Javascript,我正在创建一个包含里程碑的UI,我将使用进度条来显示这一点 我试图计算出从里程碑完成日期到今天的百分比 例如,如果我有一个名为“现场直播”的里程碑,设定在2015年12月1日,我在1月1日加入该里程碑,我想确定从开始日期到结束日期的百分比 小提琴: 这是我的尝试,但不是我的数学错了,就是我想的不对。它返回的数字是99%。我觉得这个数字应该要低一些,因为我们还有1.5个月的时间 我的最终结果是显示一个进度条,显示给定开始、结束和今天的日期,我们离完成日期有多近。试试这个,将结束和开始日期转换为单位

我正在创建一个包含里程碑的UI,我将使用进度条来显示这一点

我试图计算出从里程碑完成日期到今天的百分比

例如,如果我有一个名为“现场直播”的里程碑,设定在2015年12月1日,我在1月1日加入该里程碑,我想确定从开始日期到结束日期的百分比

小提琴:

这是我的尝试,但不是我的数学错了,就是我想的不对。它返回的数字是
99%
。我觉得这个数字应该要低一些,因为我们还有1.5个月的时间


我的最终结果是显示一个进度条,显示给定开始、结束和今天的日期,我们离完成日期有多近。

试试这个,将结束和开始日期转换为单位时间戳值

// Convert to unix values timestamp values
var startDate = start.getTime();
var endDate = end.getTime();
var todayDate = today.getTime();

// Get the total possible timestamp value
var total = endDate - startDate;

// Get the current value
var current = todayDate - startDate;

// Get the percentage
var percentage = (current / total) * 100;

alert(percentage);
jshiddle

试试这个:

var start = new Date(2015, 0, 1), // Jan 1, 2015
    end = new Date(2015, 7, 24), // August 24, 2015
    today = new Date(), // April 23, 2015
    p = Math.round(((today - start) / (end - start)) * 100) + '%';
// Update the progress bar
$('.bar').css("width", p).after().append(p);

演示:

要获得一个日期和另一个日期之间迄今为止已过去的天数百分比,您需要计算开始和结束之间的时间,然后计算开始和今天之间的时间。然后将第二个数字除以第一个:

var start = new Date(2015,0,1),
    end = new Date(2015,7,24), 
    today = new Date();

var timeBetweenStartAndEnd = (end - start); 
var timeBetweenStartAndToday = (today - start);

var p = Math.round(timeBetweenStartAndToday / timeBetweenStartAndEnd * 100); 

console.log("Percentage of days elapsed thus far: " + p);

如果您使用的是NodeJS,那么可以使用
MomentJS
包。它有许多功能,如
从现在开始的时间
减法
当与数学运算符一起使用时,日期对象将被隐式强制为数字。X/Y==(X/1000)/(Y/1000)所以转换成秒是没有意义的。谢谢@Touffy没有想到答案会被更新。你可以删除前4行。所以你的也会返回99%,但这对我来说并不正确。我的也得出了这个结果——它准确吗?我只是没有清晰地思考?这不应该是在80年代吗?哦,你的小提琴是链接到我的OP:)转换成C#.NET并确认设置“p”的逻辑是有效的。
var start = new Date(2015,0,1),
    end = new Date(2015,7,24), 
    today = new Date();

var timeBetweenStartAndEnd = (end - start); 
var timeBetweenStartAndToday = (today - start);

var p = Math.round(timeBetweenStartAndToday / timeBetweenStartAndEnd * 100); 

console.log("Percentage of days elapsed thus far: " + p);