Jelajahi Sumber

handle current date differently when doing tz coercion

Adam Shaw 7 tahun lalu
induk
melakukan
6df1fb9400
2 mengubah file dengan 18 tambahan dan 1 penghapusan
  1. 7 1
      src/datelib/env.ts
  2. 11 0
      tests/automated/datelib/main.js

+ 7 - 1
src/datelib/env.ts

@@ -93,7 +93,13 @@ export class DateEnv {
   }
 
   createNowMarker(): DateMarker {
-    return this.timestampToMarker(new Date().valueOf())
+    if (this.canComputeOffset) {
+      return this.timestampToMarker(new Date().valueOf())
+    } else {
+      // if we can't compute the current date val for a timezone,
+      // better to give the current local date vals than UTC
+      return arrayToUtcDate(dateToLocalArray(new Date()))
+    }
   }
 
   createMarkerMeta(input: DateInput): DateMarkerMeta {

+ 11 - 0
tests/automated/datelib/main.js

@@ -652,6 +652,17 @@ describe('datelib', function() {
       expect(s).toBe('Friday, June 8, 2018')
     })
 
+    it('computes current date as local values', function() {
+      var marker = env.createNowMarker()
+      var localDate = new Date()
+      expect(marker.getUTCFullYear()).toBe(localDate.getFullYear())
+      expect(marker.getUTCMonth()).toBe(localDate.getMonth())
+      expect(marker.getUTCDate()).toBe(localDate.getDate())
+      expect(marker.getUTCHours()).toBe(localDate.getHours())
+      expect(marker.getUTCMinutes()).toBe(localDate.getMinutes())
+      expect(marker.getUTCSeconds()).toBe(localDate.getSeconds())
+    })
+
   })
 
   describe('duration parsing', function() {