【问题标题】:MomentJS rounding up seconds to minute - AngularJSMomentJS 四舍五入秒到分钟 - AngularJS
【发布时间】: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


【解决方案1】:

我是这样解决的:

'${mDuration.minutes() > 0 ? (mDuration.minutes()+(mDuration.seconds() > 30 ? 1 : 0)) + "m" : ""}`'

感谢您的意见!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多