fix: when parsing duration from ISO string, set missing components to 0 instead of NaN
Fixes #1521
**Describe the bug**
When use duration format for an ISO8601, result it's not as expected :
`myDuration = dayjs.duration('PT3M39.096S')`
`myDuration.format("HH:mm:ss") => "NaN:03:39.096"`
`myDuration.format("mm:ss")       => "03:39.096"`
`myDuration.format("ss")              => "39.096"`
`myDuration.format("SSS")             => "undefined"`

**Expected behavior**
`myDuration.format("HH:mm:ss") => "00:03:39"`
`myDuration.format("mm:ss")       => "03:39"`
`myDuration.format("ss")              => "39"`
`myDuration.format("SSS")             => "096"`

**Information**
 - Day.js Version [1.10.5]
 - OS: [Windows]
 - Browser [chrome 90]


Duration format result is not as expected
diff --git a/src/plugin/duration/index.js b/src/plugin/duration/index.js
index 4e894647a..10ebb4ca2 100644
--- a/src/plugin/duration/index.js
+++ b/src/plugin/duration/index.js
@@ -84,7 +84,7 @@ class Duration {
       const d = input.match(durationRegex)
       if (d) {
         const properties = d.slice(2)
-        const numberD = properties.map(value => Number(value));
+        const numberD = properties.map(value => (value != null ? Number(value) : 0));
         [
           this.$d.years,
           this.$d.months,

diff --git a/test/plugin/duration.test.js b/test/plugin/duration.test.js
index cca1a828e..2e804691c 100644
--- a/test/plugin/duration.test.js
+++ b/test/plugin/duration.test.js
@@ -76,6 +76,9 @@ describe('Parse ISO string', () => {
   it('Part ISO string', () => {
     expect(dayjs.duration('PT2777H46M40S').toISOString()).toBe('PT2777H46M40S')
   })
+  it('Formatting missing components', () => {
+    expect(dayjs.duration('PT1H').format('YYYY-MM-DDTHH:mm:ss')).toBe('0000-00-00T01:00:00')
+  })
   it('ISO string with week', () => {
     const d = dayjs.duration('P2M3W4D')
     expect(d.toISOString()).toBe('P2M25D')

{"test/plugin/duration.test.js": {"run": "PASS", "test": "FAIL", "fix": "PASS"}}
{"test/timezone.test.js:Add Time days (DST)": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/de.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/sk.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/advancedFormat.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/weekYear.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/timezone.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/isSameOrBefore.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/pluralGetSet.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/timezone.test.js:Diff (DST)": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/keys.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/utils.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/relativeTime.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/parse.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/localizedFormat.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/updateLocale.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/constructor.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/weekday.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/isLeapYear.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/query.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/localeData.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/timezone.test.js:UTC diff in DST": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/zh.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/ja.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/declarations.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/timezone.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/ru.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/bn.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/dayOfYear.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/timezone.test.js:UTC add day in DST": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/manipulate.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/cs.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/en.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/get-set.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/he.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/utc.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/quarterOfYear.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/objectSupport.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/fi.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/sv.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/toArray.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/timezone.test.js:Utc Offset": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/bg.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/utc-utcOffset.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/sr-cyrl.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/br.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/isMoment.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/isYesterday.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/pl.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/toObject.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/sr.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/preParsePostFormat.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/isSameOrAfter.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/weekOfYear.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/comparison.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/calendar.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/isTomorrow.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/et.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/hu.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/timezone.test.js:UTC and utcOffset": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/arraySupport.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/isToday.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/hr.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/badMutable.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/sv-fi.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/customParseFormat.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/isoWeek.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/minMax.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/isoWeeksInYear.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/uk.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/buddhistEra.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/display.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/devHelper.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/lt.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/zh-cn.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/ar.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/isBetween.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}}
{"test/plugin/duration.test.js": {"run": "PASS", "test": "FAIL", "fix": "PASS"}}
{"passed_count": 79, "failed_count": 0, "skipped_count": 0, "passed_tests": ["test/timezone.test.js:Add Time days (DST)", "test/locale/sk.test.js", "test/plugin/weekYear.test.js", "test/plugin/isSameOrBefore.test.js", "test/plugin/pluralGetSet.test.js", "test/timezone.test.js:Diff (DST)", "test/locale/keys.test.js", "test/parse.test.js", "test/plugin/weekday.test.js", "test/plugin/isLeapYear.test.js", "test/query.test.js", "test/plugin/localeData.test.js", "test/timezone.test.js:UTC diff in DST", "test/locale/zh.test.js", "test/plugin/declarations.test.js", "test/locale/bn.test.js", "test/plugin/dayOfYear.test.js", "test/locale/en.test.js", "test/get-set.test.js", "test/locale/he.test.js", "test/plugin/quarterOfYear.test.js", "test/plugin/objectSupport.test.js", "test/locale/fi.test.js", "test/plugin/utc-utcOffset.test.js", "test/locale/br.test.js", "test/locale/pl.test.js", "test/plugin/toObject.test.js", "test/plugin/isSameOrAfter.test.js", "test/plugin/weekOfYear.test.js", "test/plugin/calendar.test.js", "test/plugin/arraySupport.test.js", "test/plugin/isToday.test.js", "test/locale/hr.test.js", "test/locale.test.js", "test/plugin/customParseFormat.test.js", "test/plugin/duration.test.js", "test/plugin/isoWeeksInYear.test.js", "test/locale/uk.test.js", "test/locale/zh-cn.test.js", "test/plugin/isBetween.test.js", "test/plugin.test.js", "test/locale/de.test.js", "test/plugin/advancedFormat.test.js", "test/timezone.test.js", "test/utils.test.js", "test/plugin/relativeTime.test.js", "test/plugin/localizedFormat.test.js", "test/plugin/updateLocale.test.js", "test/constructor.test.js", "test/locale/ja.test.js", "test/plugin/timezone.test.js", "test/locale/ru.test.js", "test/timezone.test.js:UTC add day in DST", "test/manipulate.test.js", "test/locale/cs.test.js", "test/plugin/utc.test.js", "test/locale/sv.test.js", "test/plugin/toArray.test.js", "test/timezone.test.js:Utc Offset", "test/locale/bg.test.js", "test/locale/sr-cyrl.test.js", "test/plugin/isMoment.test.js", "test/plugin/isYesterday.test.js", "test/locale/sr.test.js", "test/plugin/preParsePostFormat.test.js", "test/comparison.test.js", "test/plugin/isTomorrow.test.js", "test/locale/et.test.js", "test/locale/hu.test.js", "test/timezone.test.js:UTC and utcOffset", "test/plugin/badMutable.test.js", "test/locale/sv-fi.test.js", "test/plugin/isoWeek.test.js", "test/plugin/minMax.test.js", "test/plugin/buddhistEra.test.js", "test/display.test.js", "test/plugin/devHelper.test.js", "test/locale/lt.test.js", "test/locale/ar.test.js"], "failed_tests": [], "skipped_tests": []}
{"passed_count": 78, "failed_count": 1, "skipped_count": 0, "passed_tests": ["test/timezone.test.js:Add Time days (DST)", "test/locale/sk.test.js", "test/plugin/weekYear.test.js", "test/plugin/isSameOrBefore.test.js", "test/plugin/pluralGetSet.test.js", "test/timezone.test.js:Diff (DST)", "test/locale/keys.test.js", "test/parse.test.js", "test/plugin/weekday.test.js", "test/plugin/isLeapYear.test.js", "test/query.test.js", "test/plugin/localeData.test.js", "test/timezone.test.js:UTC diff in DST", "test/locale/zh.test.js", "test/plugin/declarations.test.js", "test/locale/bn.test.js", "test/plugin/dayOfYear.test.js", "test/locale/en.test.js", "test/get-set.test.js", "test/locale/he.test.js", "test/plugin/quarterOfYear.test.js", "test/plugin/objectSupport.test.js", "test/locale/fi.test.js", "test/plugin/utc-utcOffset.test.js", "test/locale/br.test.js", "test/locale/pl.test.js", "test/plugin/toObject.test.js", "test/plugin/isSameOrAfter.test.js", "test/plugin/weekOfYear.test.js", "test/plugin/calendar.test.js", "test/plugin/arraySupport.test.js", "test/plugin/isToday.test.js", "test/locale/hr.test.js", "test/locale.test.js", "test/plugin/customParseFormat.test.js", "test/plugin/isoWeeksInYear.test.js", "test/locale/uk.test.js", "test/locale/zh-cn.test.js", "test/plugin/isBetween.test.js", "test/plugin.test.js", "test/locale/de.test.js", "test/plugin/advancedFormat.test.js", "test/timezone.test.js", "test/utils.test.js", "test/plugin/relativeTime.test.js", "test/plugin/localizedFormat.test.js", "test/plugin/updateLocale.test.js", "test/constructor.test.js", "test/locale/ja.test.js", "test/plugin/timezone.test.js", "test/locale/ru.test.js", "test/timezone.test.js:UTC add day in DST", "test/manipulate.test.js", "test/locale/cs.test.js", "test/plugin/utc.test.js", "test/locale/sv.test.js", "test/plugin/toArray.test.js", "test/timezone.test.js:Utc Offset", "test/locale/bg.test.js", "test/locale/sr-cyrl.test.js", "test/plugin/isMoment.test.js", "test/plugin/isYesterday.test.js", "test/locale/sr.test.js", "test/plugin/preParsePostFormat.test.js", "test/comparison.test.js", "test/plugin/isTomorrow.test.js", "test/locale/et.test.js", "test/locale/hu.test.js", "test/timezone.test.js:UTC and utcOffset", "test/plugin/badMutable.test.js", "test/locale/sv-fi.test.js", "test/plugin/isoWeek.test.js", "test/plugin/minMax.test.js", "test/plugin/buddhistEra.test.js", "test/display.test.js", "test/plugin/devHelper.test.js", "test/locale/lt.test.js", "test/locale/ar.test.js"], "failed_tests": ["test/plugin/duration.test.js"], "skipped_tests": []}
{"passed_count": 79, "failed_count": 0, "skipped_count": 0, "passed_tests": ["test/timezone.test.js:Add Time days (DST)", "test/locale/sk.test.js", "test/plugin/weekYear.test.js", "test/plugin/isSameOrBefore.test.js", "test/plugin/pluralGetSet.test.js", "test/timezone.test.js:Diff (DST)", "test/locale/keys.test.js", "test/parse.test.js", "test/plugin/weekday.test.js", "test/plugin/isLeapYear.test.js", "test/query.test.js", "test/plugin/localeData.test.js", "test/timezone.test.js:UTC diff in DST", "test/locale/zh.test.js", "test/plugin/declarations.test.js", "test/locale/bn.test.js", "test/plugin/dayOfYear.test.js", "test/locale/en.test.js", "test/get-set.test.js", "test/locale/he.test.js", "test/plugin/quarterOfYear.test.js", "test/plugin/objectSupport.test.js", "test/locale/fi.test.js", "test/plugin/utc-utcOffset.test.js", "test/locale/br.test.js", "test/locale/pl.test.js", "test/plugin/toObject.test.js", "test/plugin/isSameOrAfter.test.js", "test/plugin/weekOfYear.test.js", "test/plugin/calendar.test.js", "test/plugin/arraySupport.test.js", "test/plugin/isToday.test.js", "test/locale/hr.test.js", "test/locale.test.js", "test/plugin/customParseFormat.test.js", "test/plugin/duration.test.js", "test/plugin/isoWeeksInYear.test.js", "test/locale/uk.test.js", "test/locale/zh-cn.test.js", "test/plugin/isBetween.test.js", "test/plugin.test.js", "test/locale/de.test.js", "test/plugin/advancedFormat.test.js", "test/timezone.test.js", "test/utils.test.js", "test/plugin/relativeTime.test.js", "test/plugin/localizedFormat.test.js", "test/plugin/updateLocale.test.js", "test/constructor.test.js", "test/locale/ja.test.js", "test/plugin/timezone.test.js", "test/locale/ru.test.js", "test/timezone.test.js:UTC add day in DST", "test/manipulate.test.js", "test/locale/cs.test.js", "test/plugin/utc.test.js", "test/locale/sv.test.js", "test/plugin/toArray.test.js", "test/timezone.test.js:Utc Offset", "test/locale/bg.test.js", "test/locale/sr-cyrl.test.js", "test/plugin/isMoment.test.js", "test/plugin/isYesterday.test.js", "test/locale/sr.test.js", "test/plugin/preParsePostFormat.test.js", "test/comparison.test.js", "test/plugin/isTomorrow.test.js", "test/locale/et.test.js", "test/locale/hu.test.js", "test/timezone.test.js:UTC and utcOffset", "test/plugin/badMutable.test.js", "test/locale/sv-fi.test.js", "test/plugin/isoWeek.test.js", "test/plugin/minMax.test.js", "test/plugin/buddhistEra.test.js", "test/display.test.js", "test/plugin/devHelper.test.js", "test/locale/lt.test.js", "test/locale/ar.test.js"], "failed_tests": [], "skipped_tests": []}