date-fns中isSameWeek方法返回结果不符合预期是什么原因?
date-fns isSameWeek返回结果不符合预期的成因
isSameWeek的周判断逻辑完全由weekStartsOn参数决定,该参数用于指定周的起始日,取值为0(周日)到6(周六),你遇到的结果差异本质是该参数的默认值不符合你的预期。- date-fns 2.x版本中,未显式传入
weekStartsOn时,该参数默认值为0,也就是默认以周日作为一周的第一天。对应你测试的日期验证:2021年12月11日为周六,2021年12月12日为周日,按周日为周起始的规则,11日属于「12月5日-12月11日」的周周期,12日属于「12月12日-12月18日」的周周期,所以无参数调用时前者返回false、后者返回true,并非默认周起始为周四,是你对默认规则的判断有误。 - 当你显式传入
{weekStartsOn: 1}时,相当于指定周一作为周起始日,此时2021年12月11日(周六)和12月12日(周日)同属于「12月6日-12月12日」的周周期,因此返回true,符合逻辑。
补充说明:如果你需要遵循国际通用的ISO周规则(固定周一为周起始,每年第一周要求包含至少4天在公历新年中),可以直接使用date-fns提供的
isSameISOWeek方法,无需额外传入周起始参数。
内容的提问来源于stack exchange,提问作者thestephenstanton
相关产品推荐
相关产品推荐

