【问题标题】:How do I get my age in X days using Moment.js?如何使用 Moment.js 在 X 天内获取我的年龄?
【发布时间】:2016-01-05 20:21:12
【问题描述】:

我当前的代码是

function ageInNDays(days) {
  return moment.duration(
    moment('1990-10-10').diff(
    moment().add(days, 'days'))
  );
}

.add(days, 'days') 到今天,然后将其与过去的某个日期进行比较。但是,moment.duration 并不总是返回经过的日历年数。它将一年定义为 365 天,并返回其中已经过去了多少年。

编辑:我仍在寻找我的年龄。如果可能的话,可能会采用类似于 moment.duration() 的 20 年、5 个月和 10 天格式。

如果我的生日是 1992 年 3 月 5 日,那么我的年龄只会在日历经过 3 月 5 日时增加。我的剩余天数只能在每月 5 号过去时重置。

EDIT2:我现在唯一的想法是

age = moment().add(days, 'days').year() - moment('1995-01-05').year()
if ((today's date + added days) < birthday's date)
  --age

【问题讨论】:

    标签: javascript date momentjs


    【解决方案1】:

    来自the documentation

    如果没有上下文,试图将年份转换为天是没有意义的。使用 moment#diff 计算两个时刻之间的天数或年数比使用 Duration 好得多。

    所以看起来使用diff 是答案:

    function ageInNDays(days) { 
        return moment().add(days, 'days').diff('1990-10-10', 'years', true); 
    }
    
    // ageInNDays(1000);
    // 27.977483271480484
    

    请注意,它会为您提供小数年数(根据第三个参数)。如果您不希望它四舍五入(默认实现会这样做),您可以截断它:

    function ageInNDays(days) { 
        return Math.floor(moment().add(days, 'days').diff('1990-10-10', 'years', true)) + ' years'; 
    }
    
    // ageInNDays(1000);
    // 27 years
    

    【讨论】:

      【解决方案2】:

      如果您真的想以天为单位计算年龄,您可以使用:

      moment.duration(moment() - moment('1990-10-10')).asDays();
      

      更新

      您还可以使用它来为您当前的年龄添加天数:

      function ageInNDays(days) {
          var age = moment.duration(moment() - moment('1990-10-10'));
          return age.add(days, 'd').asDays();
      }
      

      【讨论】:

      • 对不起,不是“我的年龄是多少天”,而是“从现在开始我的年龄是多少天”
      • @user1778856 - 我已经更新了我的答案。您所要做的就是使用相同的基本计算,然后添加天数......
      • 对不起,这仍然不能完全回答我的问题。我会尽快澄清
      【解决方案3】:

      为小数差异添加参数 boolean true

      var currentDate = new Date();
      var diff = moment(currentDate).diff('1990-10-10', 'years',true);
      console.log("Year", diff);
      

      例子

      这将根据日期回答 21.23

      【讨论】:

        猜你喜欢
        • 2014-03-17
        • 2014-03-29
        • 2018-12-17
        • 2018-10-17
        • 1970-01-01
        • 2018-06-07
        • 1970-01-01
        • 2017-04-09
        • 1970-01-01
        相关资源
        最近更新 更多