【发布时间】:2018-06-11 10:02:33
【问题描述】:
我有一个时间选择器,用户可以在其中输入以十进制表示的时间段 (8.5 for example for 8h30min),但他也可以手动输入“从”和“到”时间段,
例如 -> from: 08:00, to: 17:30 并且将传递的数据始终为十进制,在这种情况下为 8.5。
然后我有一个函数可以及时转换该小数并将其显示为某处的字符串。
问题是秒数没有四舍五入,例如,如果您输入:
9.23,以小时为单位,即9h 13min 48sec,该函数将返回此字符串:9h13min,向下取整,但我希望它始终向上取整。
不知道要在我的函数中更改什么,尝试添加 1min 然后使用 startOf('minute') 但它似乎不适用于 duration
这是函数,它接收一个数字,即十进制小时数:
getDurationAsString(hours: number): string {
if (!hours || hours <= 0) return "";
const mDuration = moment.duration(hours, "hours");
return `${mDuration.asHours() > 0 ? Math.floor(mDuration.asHours()) + "h " : ""}${mDuration.minutes() > 0 ? mDuration.minutes() + "m" : ""}`;
}
所以问题出在mDuration.minutes() + "m"
如何使用 momentJs 将持续时间四舍五入?
【问题讨论】:
-
检测到溢出后手动舍入:
!!mDuration.seconds() ? mDuration.minutes()+1 : mDuration.minutes() -
我这样解决了:'${mDuration.minutes() > 0 ? (mDuration.minutes()+(mDuration.seconds() > 30 ? 1 : 0)) + "m" : ""}`' 谢谢你的输入!
-
@AJ989 -- 如果您自己解决了这个问题,请将您的解决方案添加为这个问题的答案,并接受它。这将有助于这个问题的未来读者。
标签: angularjs datetime momentjs