'时间' xkcd

流行的漫画 xkcd 提出了将时间完整转换为日期的方程式:

流行的漫画 xkcd 提出了将时间完整转换为日期的方程式:

Backward in Time

我一直试图在 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 做一个高级日期方程?

2

你犯了三个错误:

p应为 0 到 1 之间的小数,以表示已完成进度的比率。

结果是:
T = (current date) - (a number in years)
not
T = (current date - a number) in years
您需要首先计算(e^…-e^3),然后从t中减去该多年

您忘记了原始公式中的+3

EDIT:

这里有一些working code as a JSFiddle,尽管 Javascript 在完成 75% 左右的日期用完了

2

百分比

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范围。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(401)
如何使用反应路由器DOMv6的useLocation钩子
上一篇
如何在CSS中覆盖图像
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(13条)