【问题标题】:Calculate Age JavaScript计算年龄 JavaScript
【发布时间】:2016-03-20 19:00:40
【问题描述】:

这个年龄函数是如何计算的?

具体使用的“7656656e5”值从何而来?

我正在计算 1994 年 3 月 31 日出生的人的年龄

    Age = function() {
    var e, o;
    return renderAgeLoop = function() {
      setInterval(renderAge, 100)
    }, renderAge = function() {
      var n = 7656656e5, //Where does this value come from?
        r = new Date,
        t = r - n,
        a = t / 315569e5;
      e = $("#major"), o = $("#minor");
      var i = a.toFixed(9).toString().split(".");

      var d = new Date();
      console.log(d.toUTCString())

      e.text(i[0]), o.text(i[1])
    }, {
      renderAgeLoop: renderAgeLoop
    }
  }

【问题讨论】:

  • 你在说什么 8066656e5 值?
  • @thanksd 对不起!意思是说“7656656e5”
  • 你从哪里得到这个脚本
  • 无论如何,如果你只想计算某人的年龄,这个函数会做一些奇怪的事情。你应该重写它,或者找一些其他的例子。
  • 这看起来是 dob 的 epoc 值......但在这种情况下,由于使用了 exponent notation,所以 dob 是 Apr 06 1994

标签: javascript utc


【解决方案1】:

这一行

var n = 7656656e5

是一种在 JavaScript 中表达数字的方法。我相信它指的是科学记数法。

它采用数字7656656 并乘以10 ^ 5,即e5

如果您在控制台(Chrome 开发者工具)中运行它,您会看到类似这样的内容

=> 765665600000

至于该数字代表什么,我注意到您正在将该值与new Date() 进行比较。所以它可能代表自 1970 年 1 月 1 日纪元以来的毫秒数。

无论如何,如果您想计算年龄,这里有一个更好的方法。

var startTime = new Date("1990").getTime()
var currentTime = new Date().getTime()

var age = currentTime - startTime/Math.floor(1000 * 60 * 60 * 24 * 365)

最好的解决方案是查看优秀的库MomentJS。使用起来更容易。

http://momentjs.com/

【讨论】:

  • 那么“765665600000”值 = 1970 年 1 月 1 日以来的毫秒数吗?
  • 您正在与日期进行比较。这将是我最好的猜测。
【解决方案2】:
Age = function() {
    var e, o;
    return renderAgeLoop = function() {
      setInterval(renderAge, 100)
    }, renderAge = function() {
      var n = 762498000000, //milliseconds between Jan 01 1970 00:00:00 and Mar 31 1994 00:00:00
        r = new Date,
        t = r - n,
        a = t / 31556900000; //milliseconds in a year
      e = $("#major"), o = $("#minor");
      var i = a.toFixed(9).toString().split(".");

      var d = new Date();
      console.log(d.toUTCString())

      e.text(i[0]), o.text(i[1])
    }, {
      renderAgeLoop: renderAgeLoop
    }
  }

【讨论】:

    【解决方案3】:

    纯javascript函数通过出生日期获取年龄:

    function getAge(birthDate) {
        if(Object.prototype.toString.call(birthDate) !== "[object Date]") return
        return Math.floor((new Date() - birthDate)/31557600000);
    }
    
    // Example:
    console.log(getAge(new Date("1993-01-22T00:00:00.000Z")))
    
    // Output:
    // 28
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-08
      • 2012-03-26
      • 1970-01-01
      • 2020-12-28
      • 2011-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多