【问题标题】:With momentjs, how do I tell if 2 moments represent the same day (not, necessarily, the same time)?使用 momentjs,我如何判断 2 个时刻是否代表同一天(不一定是同一时间)?
【发布时间】:2017-01-25 15:32:03
【问题描述】:

我有 2 个 momentjs 对象,moment1moment2

为什么moment1.isSame(moment2, 'date')返回false??

我的理解是,检查 moment1.isSame(moment2, 'day') 会返回它们是否是一周中的同一天(至少,这就是文档中的样子)。那么如果 'day' 和 'date' 都不起作用,那么确定这两个日期是否代表同一天的正确方法是什么?

我可以发誓我以前用过moment1.isSame(moment2, 'date'),但我一定是记错了……

【问题讨论】:

    标签: javascript momentjs


    【解决方案1】:

    您可以同时使用'day''date'isSame

    正如docs 所说:

    检查一个时刻是否与另一个时刻相同。

    当包含第二个参数时,它将匹配所有等于或大于的单位。传入month 将检查monthyear。传入day 将检查daymonthyear

    moment#isAftermoment#isBefore 一样,moment#startOf 支持的任何时间单位都支持moment#isSame

    startOf的文档中:

    注意:moment#startOf('date')2.13.0

    中被添加为 day 的别名

    这是最新版本 (2.17.1) 的工作示例:

    var moment1 = moment('01/23/17', 'MM/D/YYYY');
    var moment2 = moment('01/23/17', 'MM/D/YYYY');
    console.log( moment1.isSame(moment2, 'day') ); // true
    console.log( moment1.isSame(moment2, 'date') ); // true
    <script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

    【讨论】:

    • 所以,这只是momentjs的不一致?在其他地方,“day”表示“星期几”(例如:moment1.get('day') 返回 1)?这是 momentjs 的最新变化(moment1.isSame(moment2, 'date') 不再有效)?我过去使用过“日期”的东西,但我团队中的其他人前几天正在更新库,所以也许 momentjs 就是其中之一......
    • @Troy 更新了我的答案,您可以同时使用 dateday,它在 sn-p 中运行良好。在我的第一个答案中,我没有检查 date 是否有效。
    • 显然“日期”并不总是有效。请参阅我的原始屏幕截图。如果“day”更一致,我想我会使用它。
    • @Troy 我再次更新了我的答案,添加了添加date 的版本。您使用的是哪个版本的时刻?您能否提供一个小提琴或 sn-p 来显示您的问题而不是屏幕截图?
    • 我有 2.10.3。因此,如果在 2.13.0 中添加了“日期”别名,我想这就是问题所在。感谢您的帮助!
    【解决方案2】:

    让我们保持简单。

    moment(date1).format('L') === moment(date2).format('L')
    

    【讨论】:

    • 如果您能解释一下您是如何得出这个答案的,那就太好了。
    • @GabrielLupu 根据文档:momentjs.com/docs/#/displaying format('L') 将 momentDate 转换为字符串,例如:09/04/1986。所以最后我们将比较2个字符串。 2 个日期字符串。没有时间。
    【解决方案3】:

    更简单,使用函数isSame

    moment('2010-01-01').isSame('2010-02-01', 'day');
    

    【讨论】:

      猜你喜欢
      • 2017-10-06
      • 1970-01-01
      • 1970-01-01
      • 2012-11-09
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多