【问题标题】:The method isBefore from momentjs does not work来自momentjs的方法isBefore不起作用
【发布时间】:2022-01-13 09:03:52
【问题描述】:

我想检查其中一个日期是否在考虑分钟之前;

// 1610459035000 Tuesday, 12 January 2021 13:43:55
// 1642081435000 Thursday, 13 January 2022 13:43:55
const a = moment(1610459035000).isBefore(1642081435000, 'minute');
console.log(a) //get true but expect false
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>

制作console.log(a) 我希望得到false,因为即使年份不同,两种情况下的分钟都是相同的。
如果分钟数相同,为什么我会得到true

【问题讨论】:

  • 它比较舍入到指定组件的时间,而不是只比较那个组件。如果您只想比较该组件,请提取该组件进行比较。
  • @RickyMo,如果我理解的话,我不舒尔。你能在我的例子中展示一下吗?
  • 你到底想做什么? 2021 早于 2022,当然 isBefore 返回 true。你为什么期待一个假的?
  • 您可能正在寻找moment(1610459035000).minute() < moment(1642081435000).minute(),其中minute() 返回一个数字0-59。

标签: javascript momentjs


【解决方案1】:

the docs

第二个参数限制精度

这意味着如果您的日期是 2001-01-01T00:00:102001-01-01T00:00:05,那么通常午夜后 5 秒的日期将在午夜后 10 秒的日期之前。如果您指定'minute' 精度,那么它将忽略以秒为单位的差异,并将它们视为相同时间。

另一方面,2001-01-01T00:00:002002-01-01T00:00:00 是不同的年份。如果你有分钟精度,那么秒会被忽略,但一个仍然明显在另一个之前。

只有小于指定级别的值的部分被忽略,大于的部分不被忽略。

【讨论】:

  • 那么在我的情况下如何得到正确答案?
  • @Asking 是正确的。你期待什么,为什么?请描述你真正想做的事情。
  • @RickyMo,那么当比较它时,它会检查和年份,并且由于年份不同的事实,我明白了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多