发现 moment.js 的一个 bug
发布于 7 年前 作者 beyond5959 6237 次浏览 来自 分享
> moment({ h: 24, m: 00})
moment("2017-03-24T00:00:00.000")
> moment({ h: 0, m: 00})
moment("2017-03-23T00:00:00.000")
> moment({ h: 24, m: 00, s: 1})
moment.invalid(/* [object Object] */)

即 moment({ h: 24, m: 00, s: 1}) 会报错。

17 回复

24 点 0 分 1 秒,请问这是什么时间格式?

@DuanPengfei 也就是第二天的 0 点 0分 1秒,不加秒的话 moment({ h: 24, m: 00}) 这样就正常。

@beyond5959 那岂不是还要支持48:00:01 ??

来自酷炫的 CNodeMD

你家24小时制见过24:00:01?好比你12小时制见过12:00:01。

@beyond5959 想想进制是怎么回事就应该能想清楚了

地球上还没这时间吧…

@DuanPengfei @wocaatm 目的不是要获取 24:00:01,而是要获取第二天的00:00:01,像这样 moment({ h: 24 }) 获取第二天的 00:00:00 就是正常的。

去官方github提issue了没?

@beyond5959 moment({ h: 24, m: 00}) 这个边界情况可以通过不代表应该这样做吧?

moment({ h: 24, m: 00, s: 1}) 这是火星时间吧,好像火星是25小时制

。。。。。。。人家就是这么设计的,不允许你传入超过24小时的时间。。。。。。。难不成你传入240:00:00我还要给你算一下 参见 https://github.com/moment/moment/blob/37587a15a58607ae907c949fa1f20620f9d8e4ad/src/test/moment/is_valid.js#L87

吓尿了,原来大家的时间不一样啊。。

🚀🚀🚀🚀

回到顶部