将2个日期与momentJS进行比较

时间:2016-06-13 21:44:31

标签: javascript momentjs

我想比较日/时间,例如星期一09:00:00用当前时间看我是否超过了本周的那一点。例如如果现在是星期一05:00:00它应该返回true,但每次都返回false

var dayTime = Moment("Wednesday 17:00:00", "dddd HH:mm:ss");
var now = Moment(Moment.now(), "dddd HH:mm:ss");
console.log(Moment.utc(dayTime).isBefore(now)); //returns false all the time

我发现了以下类似的问题,但在格式化时间之后似乎没有解决问题。

Comparing two times with Moment JS

当我用"星期三17:00:00"等字符串替换moment.now()时它返回预期的结果。

知道我需要对moment.now()做些什么才能使其正常工作?

2 个答案:

答案 0 :(得分:8)

Moment.now可以用作扩展点,但它实际上不是公共API。要获得当前时间,请致电moment()。请注意,所有时刻调用都使用小写moment

要查看您的日期和时间是否在当前时间之前,您只需致电:

moment('01/01/2016', 'MM/DD/YYYY').isBefore(moment())

您可以使用自己的日期和格式替换相关日期和格式。

我看到您的日期格式仅包含星期几和时间。 Moment将解析这一点,但请注意,行为可能不是您所期望的。当我解析你的约会时,我将于2015年12月30日星期三到达。确切地说,这一天将根据当地情况而有所不同。无论如何,我怀疑它是你想要的。如果可能的话,我会得到年,月和日。

如果您希望将时间设置为本周三,请使用.day()设置当天。例如:

moment().day(3).format()
"2016-06-15T20:19:55-05:00"

答案 1 :(得分:2)

对于任何有兴趣的人,我在我的问题中发布的代码都在改变日期/小时,但是将年份设置为2015年,这意味着它总是在过去。

要解决这个问题,我将“日”和“时”分开,并设定为时刻。然后与现在进行比较。 e.g。

moment().set({"Day": "Friday", "Hour": "17"}).isBefore(moment())
相关问题