diff --git a/src/constant.js b/src/constant.js
--- a/src/constant.js
+++ b/src/constant.js
@@ -26,5 +26,5 @@ export const FORMAT_DEFAULT = 'YYYY-MM-DDTHH:mm:ssZ'
 export const INVALID_DATE_STRING = 'Invalid Date'
 
 // regex
-export const REGEX_PARSE = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?\.?(\d+)?$/
+export const REGEX_PARSE = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/
 export const REGEX_FORMAT = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g
diff --git a/src/plugin/devHelper/index.js b/src/plugin/devHelper/index.js
--- a/src/plugin/devHelper/index.js
+++ b/src/plugin/devHelper/index.js
@@ -8,6 +8,9 @@ export default (o, c, d) => {
       if (typeof date === 'string' && date.length === 13) {
         console.warn(`To parse a Unix timestamp like ${date}, you should pass it as a Number. https://day.js.org/docs/en/parse/unix-timestamp-milliseconds`)
       }
+      if (typeof date === 'number' && String(date).length === 4) {
+        console.warn(`Guessing you may want to parse the Year ${date}, you should pass it as a String ${date}, not a Number. Otherwise, ${date} will be treated as a Unix timestamp`)
+      }
       if (cfg.args.length >= 2 && !d.p.customParseFormat) {
         console.warn(`To parse a date-time string like ${date} using the given format, you should enable customParseFormat plugin first. https://day.js.org/docs/en/parse/string-format`)
       }

diff --git a/test/parse.test.js b/test/parse.test.js
--- a/test/parse.test.js
+++ b/test/parse.test.js
@@ -174,6 +174,14 @@ describe('REGEX_PARSE', () => {
     expect(d).toBe(null)
   })
 
+  // format used in timezone plugin utcString
+  it('2021-1-4 0:42:53:000', () => {
+    const date = '2021-1-4 0:42:53:000'
+    const d = date.match(REGEX_PARSE)
+    expect(dayjs(date).valueOf()).toBe(moment(date).valueOf())
+    expect(d.join('-')).toBe('2021-1-4 0:42:53:000-2021-1-4-0-42-53-000')
+  })
+
   it('2020-12-31T18:00:00-05:00 (no regex match)', () => {
     const date = '2020-12-31T18:00:00-05:00'
     const d = date.match(REGEX_PARSE)
diff --git a/test/plugin/devHelper.test.js b/test/plugin/devHelper.test.js
new file mode 100644
--- /dev/null
+++ b/test/plugin/devHelper.test.js
@@ -0,0 +1,34 @@
+import MockDate from 'mockdate'
+import dayjs from '../../src'
+import devHelper from '../../src/plugin/devHelper'
+
+dayjs.extend(devHelper)
+
+beforeEach(() => {
+  MockDate.set(new Date())
+})
+
+afterEach(() => {
+  MockDate.reset()
+})
+
+global.console.warn = jest.genMockFunction()
+
+
+it('Warning: passing Year as a Number will be parsed as a Unix timestamp', () => {
+  const consoleSpy = jest.spyOn(console, 'warn')
+  dayjs(2020)
+  expect(consoleSpy).toHaveBeenCalledWith('Guessing you may want to parse the Year 2020, you should pass it as a String 2020, not a Number. Otherwise, 2020 will be treated as a Unix timestamp')
+})
+
+it('Warning Passing Unix timestamp as a String not Number', () => {
+  const consoleSpy = jest.spyOn(console, 'warn')
+  dayjs('1231231231231')
+  expect(consoleSpy).toHaveBeenCalledWith('To parse a Unix timestamp like 1231231231231, you should pass it as a Number. https://day.js.org/docs/en/parse/unix-timestamp-milliseconds')
+})
+
+it('Warning Enable customParseFormat plugin while passing the second format parameter', () => {
+  const consoleSpy = jest.spyOn(console, 'warn')
+  dayjs('2020', 'YYYY')
+  expect(consoleSpy).toHaveBeenCalledWith('To parse a date-time string like 2020 using the given format, you should enable customParseFormat plugin first. https://day.js.org/docs/en/parse/string-format')
+})

Converting an timezoned instance to another timezone returns the wrong result
**Describe the bug**
I am trying to convert a time that I parsed using `dayjs.tz` into another timezone, but it appears to return the incorrect value.
This appears to be a regression, as it appears to work properly in `1.9.7`, though I'm not sure when this issue started.

In `1.9.7` (working properly): https://codepen.io/pikachews/pen/ZEpxwGE
![image](https://user-images.githubusercontent.com/5668416/103511419-e18b0500-4e1b-11eb-9574-991b0392750b.png)

In `1.10.1` (working incorrectly): https://codepen.io/pikachews/pen/NWRYoGo
![image](https://user-images.githubusercontent.com/5668416/103511385-cddf9e80-4e1b-11eb-99ee-a2f80bf7c26b.png)



**Expected behavior**
It should properly convert and return the correct time.

**Information**
 - Day.js Version: 1.10.1
 - OS: Windows 10
 - Browser: Chrome 87
 - Time zone: GMT-08:00 PST (Pacific Standard Time)]


Seems to work properly in `1.9.8` and broke in `1.10.0`.
bug confirmed, 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/devHelper.test.js test/parse.test.js