【问题标题】:Comparing 2 dates to see if the current date is passed - React/Momentjs比较 2 个日期以查看当前日期是否已通过 - React/Momentjs
【发布时间】:2017-05-29 16:05:04
【问题描述】:

我目前正在比较 2 个日期(和时间):我的操作必须完成的日期限制和当前日期。

我收到这种格式的日期和时间:2017-05-29T15:30:17.983Z

然后我尝试使用此函数比较两个日期:

function checkExceedLimit (props) {
    exceedLimit = 0;
    props.items.map((item) => {
        var dateLimit = moment(item.limit)
        var now = moment()
        if (item.limit != null || item != ' ' && now > dateLimit) {
            exceedLimit++;
            console.log(now)
            console.log(dateLimit)
        }
    })
}

基本上我想比较每个项目中的limit,并在当前日期过去时将 +1 添加到超出限制。然而,即使并非所有限制都通过了,它也会为每个限制返回 +1。

感谢您的帮助

【问题讨论】:

  • moment 有这方面的方法。喜欢isBeforeisAfter。我认为这应该对您有所帮助
  • 是的,我看到了这些方法,但是当我尝试它们时它们不起作用。我写对了吗? moment(dateLimit).isAfter()) ?
  • moment('2010-10-20').isBefore('2010-12-31', 'year'); 这是文档中的一个示例。
  • @petithomme 不,你必须这样做now.isAfter(dateLimit)

标签: reactjs datetime momentjs


【解决方案1】:

只需使用isBeforeisAfter,你可以这样做:

if (item.limit != null || item != ' ' && now.isAfter(dateLimit) ) {

【讨论】:

  • 在我的代码中使用了相同的逻辑并且它有效。只需添加括号将||&& 语句分开即可更改优先级。 if ((item.limit != null || item != ' ') && now.isAfter(dateLimit) ) { 谢谢!
【解决方案2】:

首先你应该正确地创建你的时刻实例。

像这样: moment("2017-05-29T15:30:17.983Z", 'YYYY-MM-DDTHH:mm:ss.SSSZ')

您可以查看此链接了解更多详情:https://momentjs.com/docs/#/parsing/string-format/

然后您可以使用 https://momentjs.com/docs/#/query/ 上的时刻 API 方法比较日期

所以你的代码应该是这样的:

function checkExceedLimit (props) {
  exceedLimit = 0;
  props.items.map((item) => {
    const dateLimit = moment(item.limit, 'YYYY-MM-DDTHH:mm:ss.SSSZ');
    const now = moment()
    if (dateLimit.isValid() && now.isAfter(dateLimit)) {
        exceedLimit++;
        console.log(now.toString())
        console.log(dateLimit.toString())
    }
  })
}

【讨论】:

  • 在 if 语句中使用 isValid() 函数的好主意,我没有想到。对于创建 dateLimit 变量,我认为您不必指定格式,因为这两个值都在 momentjs 中。我将 isValid() 函数添加到我的代码中。谢谢。
  • 一旦你说时间是在瞬间给出的,我同意你的观点,你不需要格式化它,甚至不需要创建一个时刻。我建议,因为我理解它是一个字符串,一旦你指定了日期格式并将 item.limit 放入片刻。
  • 哦,我明白了。是的 item.limit 已经在我的情况下格式化了。
猜你喜欢
  • 1970-01-01
  • 2016-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多