【问题标题】:Moment.js decimals into time formatMoment.js 将小数转换为时间格式
【发布时间】:2016-02-19 13:06:56
【问题描述】:

我正在尝试将像 1.25 这样的小数格式化为如下格式。

我正在使用 FullCalendar。

我想要做的是从日历中删除事件,但将它们放回具有适当data-duration 属性的外部事件队列中。

1 -> 01:00
1.25 -> 01:15
1.5 -> 01:30
1.75 -> 01:45

等等

我将永远只每隔 15 分钟工作一次。

moment.js 可以做到这一点吗?

谢谢!

【问题讨论】:

    标签: javascript fullcalendar momentjs


    【解决方案1】:

    我认为对于这个简单的目的来说,momentjs 会有点过分。 您可能想使用 vanilla JS 以这种方式格式化小数

    function parse(num) {
        return ('0' + Math.floor(num) % 24).slice(-2) + ':' + ((num % 1)*60 + '0').slice(0, 2);
    }
    
    parse(24.5) -> '00:30'
    parse(1.25) -> '01:15'
    parse(1.5) -> '01:30'
    parse(1.75) -> '01:45'
    

    一些解释:

    Math.floor(num) % 24 - 获取小时数

    '0'+ Math.floor(num) % 24 - 将数字强制转换为以 nil 开头的字符串

    ('0' + Math.floor(num) % 24).slice(-2) - 获取字符串中的最后两个字符

    (num % 1) - 获取分钟作为小数部分的一部分

    (num % 1)* 60 + '0' - 使用尾随 nil 强制转换为分钟

    (num % 1)*60 + '0').slice(0, 2) - 获取字符串中的前两个字符;

    【讨论】:

    • 谢谢!效果很好。 Moment.js 已经被加载到页面上,所以我认为它的库中可能有一个函数 - 但这有效!
    • 如果我在代码审查中看到没有单元测试的情况下,我不会让这个通过......如果有单元测试,我仍然会责备他们浪费时间,除非我们在一些疯狂的环境正在加载任何库都没有问题......
    • 嗯,总的来说,我同意自行编写的 sn-ps 几乎 总是比具有所有经过良好测试的边缘案例感知解决方案的库更糟糕。尽管如此,在导入臃肿的组合(如momentjs)之前我会三思而后行,只是为了进行一些原始转换。尤其是在浏览器环境方面。所以我会说“了解您的限制并明智地导入”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多