jquery - 如何使用 moment.js 将年转换为月?

标签 jquery node.js momentjs

目前我的代码如下所示:

moment.duration(res.duration, "years").format("Y [years] M [months]"); //Input 0.08 outputs 0

当 res.duration < 0 时,它仅返回 0。 我尝试将我的代码修改为

moment.duration(res.duration, 'months').format("M [months]"); //Input 0.08 outputs 0

但似乎仍然不起作用。

知道如何将 0.08 完美转换为 1 吗?

最佳答案

问题是 0.08不是 1 个月,而是 0.96 个月,因此您必须对其进行四舍五入。

不幸的是moment-duration-format (我假设您正在使用)只能截断持续时间的值,将负整数传递给 precision选项。

可能的解决方案:

  1. 存储更高精度的值,而不是按小数点后第二位四舍五入。这是使用 0.080.08333333333333333 的实例。 (参见month()toISOString())

var dur = moment.duration(0.08, "years");
console.log(dur.format('M [Months]'));
console.log(dur.months());
console.log(dur.toISOString());

// More decimal gives 1 month
dur = moment.duration(0.08333333333333333, "years");
console.log(dur.format('M [Months]'));
console.log(dur.months());
console.log(dur.toISOString());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-duration-format/1.3.0/moment-duration-format.min.js"></script>

  • 使用时刻humanize() 。您可以按照 Relative Time 中所述自定义输出。 , Relative Time ThresholdsRelative Time Rounding文档部分。
  • moment.updateLocale('en', {
        relativeTime : {
            M:  "1 month",
            MM: "%d months"
        }
    });
    
    var dur = moment.duration(0.08, "years");
    console.log(dur.humanize());
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"></script>

    关于jquery - 如何使用 moment.js 将年转换为月?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47909997/

    相关文章:

    javascript - 如果时间已过,则从选择框中删除代表时间的项目

    javascript - 单击时更改文本颜色

    javascript - 内部图像旋转时更改尺寸的父 div

    node.js - AWS Lambda 使用触发器创建函数

    javascript - 如何正确处理在 node-webkit 中打开 _blank 窗口的链接?

    javascript - 在 angularjs 中使用 javascript 内联

    javascript - 获取实例来调用方法?

    javascript - 我如何在日期选择器中隐藏过去的日期

    javascript - 为什么我的渲染器进程会收到 "exports is not defined"?

    javascript - moment().toObject() 输出格式