From f2e5f327aaf12b4572296ec6e107ecc05fcf76e7 Mon Sep 17 00:00:00 2001 From: iamkun Date: Sat, 8 Aug 2020 14:08:44 +0800 Subject: [PATCH] fix: Fix isoWeek Plugin cal bug in UTC mode (#993) --- src/plugin/isoWeek/index.js | 6 +++--- test/plugin/isoWeek.test.js | 10 ++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/plugin/isoWeek/index.js b/src/plugin/isoWeek/index.js index 79e6fab33..72018ffff 100644 --- a/src/plugin/isoWeek/index.js +++ b/src/plugin/isoWeek/index.js @@ -3,8 +3,8 @@ import { D, W, Y } from '../../constant' const isoWeekPrettyUnit = 'isoweek' export default (o, c, d) => { - const getYearFirstThursday = (year) => { - const yearFirstDay = d().year(year).startOf(Y) + const getYearFirstThursday = (year, isUtc) => { + const yearFirstDay = (isUtc ? d.utc : d)().year(year).startOf(Y) let addDiffDays = 4 - yearFirstDay.isoWeekday() if (yearFirstDay.isoWeekday() > 4) { addDiffDays += 7 @@ -26,7 +26,7 @@ export default (o, c, d) => { return this.add((week - this.isoWeek()) * 7, D) } const nowWeekThursday = getCurrentWeekThursday(this) - const diffWeekThursday = getYearFirstThursday(this.isoWeekYear()) + const diffWeekThursday = getYearFirstThursday(this.isoWeekYear(), this.$u) return nowWeekThursday.diff(diffWeekThursday, W) + 1 } diff --git a/test/plugin/isoWeek.test.js b/test/plugin/isoWeek.test.js index b86a6d6ae..b6ebc392b 100644 --- a/test/plugin/isoWeek.test.js +++ b/test/plugin/isoWeek.test.js @@ -2,8 +2,10 @@ import MockDate from 'mockdate' import moment from 'moment' import dayjs from '../../src' import isoWeek from '../../src/plugin/isoWeek' +import utc from '../../src/plugin/utc' dayjs.extend(isoWeek) +dayjs.extend(utc) beforeEach(() => { MockDate.set(new Date()) @@ -124,3 +126,11 @@ it('isoWeek of year', () => { expect(dayjs('20210110').isoWeekYear()).toBe(2021) expect(dayjs('20210110').isoWeek()).toBe(1) }) + + +it('utc mode', () => { + // Wednesday, 1 January 2020 00:00:00 UTC + const d = dayjs.utc(1577836800000).isoWeek() + expect(d).toBe(1) + expect(moment.utc(1577836800000).isoWeek()).toBe(d) +})