📜  Moment.js isSame()函数(1)

📅  最后修改于: 2023-12-03 15:32:55.973000             🧑  作者: Mango

Moment.js isSame()函数

isSame()函数是Moment.js库中的一个函数,用于比较两个时间对象是否相同。具体来说,该函数可以根据指定的时间单位(例如年、月、日、时、分、秒等)对两个时间对象进行比较,判断它们是否在指定的时间单位上相同。

语法

isSame(unit: string | unitOfTime.Diff, compared: MomentInput, granularity?: unitOfTime.StartOf): boolean

参数
  • unit: 指定的时间单位,可以是如下字符串之一:'year', 'month', 'week', 'day', 'hour', 'minute', 'second'。也可以是一个Moment.js的时间单位对象。
  • compared: 要比较的时间对象,可以是一个Moment.js时间对象,也可以是一个能被Moment.js解析的日期字符串。
  • granularity(可选):比较的精度,可以是如下字符串之一:'year', 'month', 'day', 'hour', 'minute', 'second'。如果不指定此参数,精度默认为秒。
返回值

如果两个时间对象在指定的时间单位上相同,则返回true,否则返回false

示例
const date1 = moment('2022-12-31 23:59:59');
const date2 = moment('2023-01-01 00:00:01');
const date3 = moment('2023-01-01 00:01:00');

console.log(date1.isSame('year', date2)); // false
console.log(date1.isSame('year', date3)); // true

console.log(date2.isSame('month', date3)); // true

console.log(date1.isSame('hour', date2)); // true

console.log(date1.isSame(date2)); // false
console.log(date2.isSame(moment('2023-01-01 00:00:01'))); // true
注意事项
  • isSame()函数比较的是两个时间对象在指定时间单位上的值是否相同,而不是比较两个时间对象是否完全相同。例如,moment('2022-12-31 23:59:59')moment('2023-01-01 00:00:01')虽然表现为两个时间点,但是如果单位为年,则它们在年份上相同。
  • 在比较月份的时候,isSame()函数会把年份和月份都考虑在内。例如,moment('2022-12-31 23:59:59').isSame('month', moment('2023-01-01 00:00:01'))会返回true,因为它们在年份和月份上都相同。如果只需要比较月份的值是否相等,可以使用isSameMonth()函数。
  • 在比较周的时候,isSame()函数会按照ISO 8601标准把周一看作一周的开始。例如,moment('2022-12-31 23:59:59').isSame('week', moment('2023-01-01 00:00:01'))会返回false,因为它们不在同一周内。如果需要自定义周的开始日,可以使用startOf()函数,然后再使用isSame()函数进行比较。
  • 在比较日期时,由于每个月的天数不同,因此需要根据具体情况选择比较的精度。例如,在比较moment('2015-02-28')moment('2015-03-01')时,如果精度为月,则它们在月份上相同,如果精度为日,则它们不相同。