diff --git a/src/plugin/duration/index.js b/src/plugin/duration/index.js
--- a/src/plugin/duration/index.js
+++ b/src/plugin/duration/index.js
@@ -198,7 +198,7 @@ class Duration {
     } else {
       base = this.$d[pUnit]
     }
-    return base === 0 ? 0 : base // a === 0 will be true on both 0 and -0
+    return base || 0 // a === 0 will be true on both 0 and -0
   }
 
   add(input, unit, isSubtract) {

diff --git a/test/plugin/duration.test.js b/test/plugin/duration.test.js
--- a/test/plugin/duration.test.js
+++ b/test/plugin/duration.test.js
@@ -186,6 +186,12 @@ describe('Add', () => {
   expect(a.add({ days: 5 }).days()).toBe(6)
 })
 
+describe('Add to a dayjs()', () => {
+  const a = dayjs()
+  const b = dayjs.duration({ hours: 7, minutes: 10 })
+  expect(a.add(b)).toEqual(a.add(7, 'hours').add(10, 'minutes'))
+})
+
 test('Add duration', () => {
   const a = dayjs('2020-10-01')
   const days = dayjs.duration(2, 'days')

dayjs add duration returns Invalid Date
**Describe the bug**
dayjs().add(dayjs.duration({ "hours" : 7, "minutes" : 10) })) 

returns "invalid Date" 
only "hours" and "minutes" are in the duration object

dayjs.duration(7, "hours").add(10, "minutes") is working 

**Information**
 - Day.js Version 1.11.9
 - Time zone: GMT+02:00 [MESZ]


Can reproduce after upgrading from 1.11.7 to 1.11.9.

Example usage
```
dayjs.extend(duration)
dayjs.extend(utc)
dayjs.extend(objectSupport)

// Invalid Date
dayjs.utc({ hours: 11, minutes: 30, seconds: 0} ).add(dayjs.duration({ hours: 11, minutes: 0, seconds: 0 })
```

I've used `dayjs().add(duration.asSeconds(), 'seconds')` as a workaround which works for my usecase


will fix soon
test/timezone.test.js(1) test/timezone.test.js(2) test/timezone.test.js(3) test/timezone.test.js(4)
test/plugin/duration.test.js