【问题标题】:Momentjs Range returning FalseMomentjs 范围返回 False
【发布时间】:2017-09-14 16:32:57
【问题描述】:

我正在尝试使用 Moment 使用 Moment Range 插件来确定日期是否介于两个日期之间: https://github.com/rotaready/moment-range#contains

由于某种原因,我下面的代码总是抛出 False。以下是输出示例:

开始:2015-01-01 00:00:00 结束:2017-08-01 00:00:00 关闭:2017-06-08 17:59:56 决定:错误

您可以在这里清楚地看到关闭日期介于开始日期和结束日期之间,但我被告知不是

这是我的代码:

let end = moment('2017-08-01 00:00:00').format('YYYY-MM-DD HH:mm:ss')
let start = moment('2015-01-01 00:00:00').format('YYYY-MM-DD HH:mm:ss')
let closedDate = moment('2017-06-08 17:59:56').format('YYYY-MM-DD HH:mm:ss')
let range = moment.range(start, end)

console.log(`START:`,start,'END:',end,'CLOSED:',closedDate,'DECISION:',range.contains(closedDate));

【问题讨论】:

  • 为什么不使用isBetween 方法?我知道它纯粹的momentjs,但它可以工作
  • 哇,好吧,我在查看他们的文档时完全错过了这种方法。谢谢!
  • 不客气!

标签: javascript momentjs


【解决方案1】:

我设法使用 inside 函数解决了这个问题,还改变了我格式化时刻对象的方式

let end = moment('2017-08-01 00:00:00', 'YYYY-MM-DD HH:mm:ss')
let start = moment('2015-01-01 00:00:00', 'YYYY-MM-DD HH:mm:ss')
let closedDate = moment('2017-06-08 17:59:56','YYYY-MM-DD HH:mm:ss')
let range = moment.range(start, end)
console.log(`START:`,start,'END:',end,'CLOSED:',closedDate,'DECISION:',closedDate.within(range));

【讨论】:

  • moment.format() 返回字符串,并且 contains 期望 js 日期,因此 range.contains(closedDate.toDate()) 将适用于这些新声明。
猜你喜欢
  • 2020-12-12
  • 1970-01-01
  • 1970-01-01
  • 2019-11-11
  • 1970-01-01
  • 2016-11-15
  • 2015-10-08
  • 2020-06-25
  • 1970-01-01
相关资源
最近更新 更多