【问题标题】:Comparing 2 dates with momentJS用 momentJS 比较 2 个日期
【发布时间】:2016-06-13 21:44:30
【问题描述】:

我正在尝试比较 DAY/TIME,例如星期一 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

当我将 moment.now() 替换为诸如“星期三 17:00:00”之类的字符串时,它会返回预期的结果。

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

【问题讨论】:

  • 我不希望moment(moment.now(), "dddd HH:mm:ss") 产生你想要的时刻; moment.now() 返回一个纪元时间表示,并且您传递的是完全不同的格式字符串。试试moment(moment.now())
  • moment.now 根本不应该使用。它是一个不属于公共 api 的扩展点。要获取当前时间,只需调用 moment()

标签: javascript momentjs


【解决方案1】:

Moment.now 可以用作扩展点,但它实际上不是公共 API。要在 momentjs 中获取当前时间,您只需调用 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"

【讨论】:

  • 谢谢你,但它并不能完全回答我的问题。我有一天/时间(没有年份),想知道我现在是在一周的那个时间点之前还是之后,在进一步查看(和你的评论)之后,它似乎由于当天/而返回错误小时总是在过去一年 - 知道如何克服这个问题吗?
【解决方案2】:

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

为了解决这个问题,我将日期和时间分开并设置为时刻。然后和现在比较。例如

moment().set({"Day": "Friday", "Hour": "17"}).isBefore(moment())

【讨论】:

    猜你喜欢
    • 2018-04-03
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    • 1970-01-01
    • 2017-10-01
    • 2015-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多