【问题标题】:Not able to compare day in momentjs with isSame()无法将 momentjs 中的日期与 isSame() 进行比较
【发布时间】:2020-09-07 16:59:41
【问题描述】:

寻找在今天是生日时发出警报的解决方案。这里比较isSame() 中的DayMonth 非常不幸的是isSame() 没有将日期与给定日期进行比较。当年份不同时,month 也不成立。

寻找 javascript 来查找用户的生日

const dateOfBirth = moment("2018-09-07T13:36:14.000Z").format("DD-MM-YYYY");
const today = moment(new Date()).format("DD-MM-YYYY");

if (
  moment(dateOfBirth).isSame(today, "day") &&
  moment(dateOfBirth).isSame(today, "month")
) {
  console.log("Today is your birth day");
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

【问题讨论】:

  • 当您只想比较日期时使用 UTC 时间戳意味着比较可能会在不应该的情况下失败。修剪时间部分,只使用日期:moment('2018-09-07', 'YYYY-MM-DD') 然后,正如 Webber 所说,将年份设置为当前年份并进行比较。

标签: javascript ecmascript-6 momentjs date


【解决方案1】:

Momentjs 有一个api 来检查某个日期是否相同。

它采用日期对象而不是格式化字符串作为参数。

为了检查任何年份,只需使用一个技巧:将对象的年份设置为今天的年份。

例子:

// Date in any year
const dateOfBirth = moment("2018-09-07T13:36:14.000Z");

// Set year to current year
dateOfBirth.year(moment().year());

// Compare to today
console.log('Is it your birthday?', dateOfBirth.isSame(new Date(), "day"))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

也可以制作一个变量的副本,这样原始的就可以保持不变。

【讨论】:

    猜你喜欢
    • 2017-10-01
    • 1970-01-01
    • 2018-03-08
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多