【问题标题】:convert days into month and remaining days using moment.js使用 moment.js 将天数转换为月数和剩余天数
【发布时间】:2019-08-07 05:52:53
【问题描述】:

例如,我有 250 天,我想使用 moment.js 将其转换为月份和天数,你知道我该怎么做吗?

Example:

What I've: 250 Days

What I want: 8 Months and 7 Days

【问题讨论】:

  • 您需要从当前日期时间开始向前或向后计算月份吗?
  • 为什么 250 天是 8 个月零 7 天?从 2019 年 1 月 1 日起的 250 天是 8 个月 7 天(以后),但从 2019 年 2 月 1 日起是 8 个月 8 天,从 2019 年 3 月 1 日起是 8 个月 5 天,从 2019 年 4 月 1 日起是 8 个月 6 天......看看问题用“你想要什么”?
  • 这几天从今天开始计算!

标签: javascript node.js momentjs


【解决方案1】:

您可以分别查看年月日的差异并一起显示

var start = moment();
var end = moment().add(250, 'days');

var years = end.diff(start, 'year');
start.add(years, 'years');

var months = end.diff(start, 'months');
start.add(months, 'months');

var days = end.diff(start, 'days');

console.log(years + ' years ' + months + ' months ' + days + ' days');
<script src="https://cdn.jsdelivr.net/momentjs/2.10.6/moment-with-locales.min.js"></script>

【讨论】:

  • 年是多余的,因为 250 天总是小于 1 年:p
  • @JaromandaX 是的 250 天是 .. 但如果天数超过 365 天则不是
【解决方案2】:

您可以立即使用diff and duration 来实现此目的。

const currentDate = moment(new Date(), 'YYYY-MM-DD');
const futureDate = moment(currentDate).add(250, 'days');
const diff = moment.duration(futureDate.diff(currentDate));

console.log(`${diff.months()} Months and ${diff.days()} Days`);
// 8 Months and 6 Days

【讨论】:

    【解决方案3】:

    const futureDate = moment().add(250, 'days');
    const duration = moment.duration(futureDate.diff(moment()));
    
    console.log(`${duration.months()} Months and ${duration.days()} Days`);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>

    注意:这是一个没有边缘情况的简化示例

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-11
      • 1970-01-01
      相关资源
      最近更新 更多