在 Moment.js 中获取天数、小时数和分钟数

新手上路,请多包涵

所以这是我第一次使用 Moment.js 并且遇到了以下问题,所以我有以下日期:

 now: 2017-01-26T14:21:22+0000
expiration: 2017-01-29T17:24:22+0000

我想要得到的是:

 Day: 3
Hours: 3
Mins: 3

我尝试了以下代码:

 const now = moment();
const exp = moment(expire_date);
console.log(expire_date);
days = exp.diff(now, 'days');
hours = exp.diff(now, 'hours') - (days * 24);
minutes = exp.diff(now, 'minutes') - ((days * 1440) + (hours * 24) * 60);

我知道我做错了什么(也许是我的计算或者我使用了错误的方法),但我无法弄清楚它是什么。

原文由 I am L 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

MomentJS 可以为您计算所有这些,而无需您执行任何逻辑。

  • 先找出两个矩的区别
  • 将其表示为持续时间
  • 然后显示任何组件 .days() , .hours() 你想要的持续时间。

注意:如果需要,您还可以表达整个持续时间 .asDays() , .asHours() 等。

 const now = moment("2017-01-26T14:21:22+0000");
const expiration = moment("2017-01-29T17:24:22+0000");

// get the difference between the moments
const diff = expiration.diff(now);

//express as a duration
const diffDuration = moment.duration(diff);

// display
console.log("Days:", diffDuration.days());
console.log("Hours:", diffDuration.hours());
console.log("Minutes:", diffDuration.minutes());
 <script src="https://momentjs.com/downloads/moment.js"></script>

原文由 gotomanners 发布,翻译遵循 CC BY-SA 3.0 许可协议

这将为您提供正确的值并消除手动计算的麻烦

 let expiration = "2017-01-29T17:24:22+0000"
const now = moment();
const exp = moment(expiration);

console.log(exp.format());

days = exp.diff(now, 'days');
hours = exp.subtract(days, 'days').diff(now, 'hours');
minutes = exp.subtract(hours, 'hours').diff(now, 'minutes');

console.log(days, hours, minutes)
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

请注意 substract 操作将改变原始 exp 值,所以不要四处传递它期望它是原始日期

原文由 alebianco 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题