Moment.js 将小数转换为时间格式

sti*_*ire 3 javascript fullcalendar momentjs

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

我正在与 FullCalendar 合作。

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

1 -> 01:00
1.25 -> 01:15
1.5 -> 01:30
1.75 -> 01:45
Run Code Online (Sandbox Code Playgroud)

ETC。

我总是每隔 15 分钟工作一次。

这可以用 moment.js 实现吗?

谢谢!

Ole*_*nko 5

我认为对于这个简单的目的来说,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'
Run Code Online (Sandbox Code Playgroud)

一些解释:

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

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

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

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

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

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