目前我的代码如下:
moment.duration(res.duration, 'months').format("M [months]"); //Input 0.08 outputs 0
当resduduration< 0它只返回0。 我试图将我的代码修改为
oSheet.Cells[36, 7].Font.FontStyle = "Regular";
oSheet.Cells[36, 7].Characters(0, 4).Font.FontStyle = "Bold";
oSheet.Cells[36, 7].Characters(10, 4).Font.FontStyle = "Bold";
但似乎仍无效。
任何想法如何将0.08完美转换为1?
答案 0 :(得分:2)
问题是0.08
年不 1个月,它是0.96
个月,所以你必须围绕它。
不幸的是moment-duration-format(我假设您正在使用)只能截断持续时间的值,将负整数传递给precision
选项。
0.08
和0.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>
&#13;
humanize()
。您可以按照文档的Relative Time,Relative Time Thresholds和Relative Time Rounding部分中的说明自定义输出。
moment.updateLocale('en', {
relativeTime : {
M: "1 month",
MM: "%d months"
}
});
var dur = moment.duration(0.08, "years");
console.log(dur.humanize());
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"></script>
&#13;
答案 1 :(得分:1)
我认为你误解了moment.duration
的作用:
要创建持续时间,请使用以毫秒为单位的时间长度调用moment.duration()。 [...]如果你想用毫秒以外的测量单位创建一个时刻,你也可以通过测量单位。
通过这样做:
moment.duration(0.08, 'months')
您创建的持续时间为0.08 个月。我想你想要0.08 年
moment.duration(0.08, 'years')
您也无法在持续时间内使用format
,因此请手动执行此操作:
var months = Math.round(moment.duration(0.08,"years").months());
console.log(months,"month");
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"></script>
&#13;
如果你真的想使用format
,你可以将你的持续时间转换回来
var dur = moment.duration(0.08,"years");
console.log(moment.utc(dur.as('milliseconds')).format('M [Months]'));
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"></script>
&#13;
在上面的示例中需要注意的事项 - 它将向上。因此0.1
的值为2 months
。