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