Sfoglia il codice sorgente

fix:fixed parseTime bug in ie and safari

https://github.com/PanJiaChen/vue-element-admin/commit/776f10e19720039d39593064663b618fbdb0e837
潘嘉晨 5 anni fa
parent
commit
97290e6f49
2 ha cambiato i file con 13 aggiunte e 2 eliminazioni
  1. 10 2
      src/utils/index.js
  2. 3 0
      tests/unit/utils/parseTime.spec.js

+ 10 - 2
src/utils/index.js

@@ -17,9 +17,17 @@ export function parseTime(time, cFormat) {
   if (typeof time === 'object') {
     date = time
   } else {
-    if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
-      time = parseInt(time)
+    if ((typeof time === 'string')) {
+      if ((/^[0-9]+$/.test(time))) {
+        // support "1548221490638"
+        time = parseInt(time)
+      } else {
+        // support safari
+        // https://stackoverflow.com/questions/4310953/invalid-date-in-safari
+        time = time.replace(new RegExp(/-/gm), '/')
+      }
     }
+
     if ((typeof time === 'number') && (time.toString().length === 10)) {
       time = time * 1000
     }

+ 3 - 0
tests/unit/utils/parseTime.spec.js

@@ -5,6 +5,9 @@ describe('Utils:parseTime', () => {
   it('timestamp', () => {
     expect(parseTime(d)).toBe('2018-07-13 17:54:01')
   })
+  it('timestamp string', () => {
+    expect(parseTime((d + ''))).toBe('2018-07-13 17:54:01')
+  })
   it('ten digits timestamp', () => {
     expect(parseTime((d / 1000).toFixed(0))).toBe('2018-07-13 17:54:01')
   })