📅  最后修改于: 2023-12-03 15:32:55.973000             🧑  作者: Mango
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')
时,如果精度为月,则它们在月份上相同,如果精度为日,则它们不相同。