流行的漫画 xkcd 提出了将时间完整转换为日期的方程式:
我一直试图在 JavaScript 中做同样的事情,虽然我不断得到-Infinity
。
var p = 5; // Percent Complete
var today = new Date();
today = today.getTime();
var t;
t = (today) - (Math.pow(Math.E, (20.3444 * Math.pow(p,3))) -
Math.pow(Math.E,3));
document.write(t + " years");
时间将返回一个巨大的数字(毫秒),我知道这个方程并不意味着处理毫秒-那么如何用 JavaScript 做一个高级日期方程?
你犯了三个错误:
p
应为 0 到 1 之间的小数,以表示已完成进度的比率。
结果是:T = (current date) - (a number in years)
notT = (current date - a number) in years
您需要首先计算(e^…-e^3)
,然后从t
中减去该多年
您忘记了原始公式中的+3
这里有一些working code as a JSFiddle,尽管 Javascript 在完成 75% 左右的日期用完了

百分比
var p = 5; // Percent Complete
实际上应该是fraction complete
,所以它变成0.05
为 5%。然后当接近完成时,p
接近 1,时间接近有限极限。
对于 5% 完成的p = 5
,减去的时间将接近(大致)
exp(20.3444*10^6)
当接近完成时,远超过double
的范围,已经exp(40)
是宇宙年龄的数百万倍,exp(1000)
超过double
范围。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(13条)