From f287ef89dd09416d8e7b87e6522cfa5e0a508ab4 Mon Sep 17 00:00:00 2001 From: Sanjay Nishad Date: Sat, 1 Jul 2023 03:06:54 +0530 Subject: [PATCH 1/2] fix: duration plugin - MILLISECONDS_A_MONTH const calculation --- src/plugin/duration/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugin/duration/index.js b/src/plugin/duration/index.js index 26bc75e34..9c23f178a 100644 --- a/src/plugin/duration/index.js +++ b/src/plugin/duration/index.js @@ -8,7 +8,7 @@ import { } from '../../constant' const MILLISECONDS_A_YEAR = MILLISECONDS_A_DAY * 365 -const MILLISECONDS_A_MONTH = MILLISECONDS_A_DAY * 30 +const MILLISECONDS_A_MONTH = MILLISECONDS_A_YEAR / 12 const durationRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/ From 6f022ec76faf766f38b2dcf5c2363f236f6a241f Mon Sep 17 00:00:00 2001 From: Sanjay Nishad Date: Wed, 5 Jul 2023 00:14:39 +0530 Subject: [PATCH 2/2] unit test updates --- test/plugin/duration.test.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/plugin/duration.test.js b/test/plugin/duration.test.js index 4a4753931..aa66846f8 100644 --- a/test/plugin/duration.test.js +++ b/test/plugin/duration.test.js @@ -85,8 +85,9 @@ describe('Parse ISO string', () => { it('ISO string with week', () => { const d = dayjs.duration('P2M3W4D') expect(d.toISOString()).toBe('P2M25D') - expect(d.asDays()).toBe(85) // moment 85, count 2M as 61 days - expect(d.asWeeks()).toBe(12.142857142857142) // moment 12.285714285714286 + expect(d.asDays()).toBe(85.83333333333333) // moment 86, count 2M as 61 days + expect(d.asWeeks()).toBe(12.261904761904763) // moment 12.285714285714286 + expect(d.asMonths()).toBe(2.8219178082191783) // moment 2.8213721020965523 }) it('Invalid ISO string', () => { expect(dayjs.duration('Invalid').toISOString()).toBe('P0D')