片刻js" isSameOrAfter()"将当前时间与不到1天的事件进行比较时,这是错误的

时间:2018-04-12 21:22:55

标签: javascript momentjs

我想检查当前的utc时间是否少于活动日期的1天。我通过的事件日期减去了一天。基本上我是在寻找当前的utc时间是否比事件日期少一天,但是这个查询是假的,而不是真的!!

离。在utc时间和1天之后通过,然后检查它是否距离当前时间不到一天

if (moment().utc().isSameOrAfter(moment("4/13/2018 7:30:00 PM").add(-1, 'days').utc())) {
   // returns false but should be true because it's less then one day from 4/13/2018 7:30PM
}

1 个答案:

答案 0 :(得分:3)

问题在于您解析输入的方式。由于"4/13/2018 7:30:00 PM"既不是ISO 8601也不是RFC 2822已知格式,因此您必须使用moment(String, String)代替moment(String)

  

当从字符串创建片刻时,我们首先检查字符串是否与已知的ISO 8601格式匹配,然后检查字符串是否与RFC 2822日期时间格式匹配,然后再下降到新日期(字符串)的后退(如果已知)找不到格式。

     

为了解析除ISO 8601字符串以外的任何其他内容的一致结果,您应该使用String + Format。

在您的情况下,您可以使用:

moment("4/13/2018 7:30:00 PM", "M/D/YYYY h:mm:ss A")

而不是

moment("4/13/2018 7:30:00 PM")