@fr0st/datetime 5.1.5 → 5.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -220,18 +220,18 @@
220
220
  switch (timeUnit) {
221
221
  case 'second':
222
222
  case 'seconds':
223
- return date.setSeconds(
224
- date.getSeconds() + amount,
223
+ return date.setTime(
224
+ date.getTime() + (amount * 1000),
225
225
  );
226
226
  case 'minute':
227
227
  case 'minutes':
228
- return date.setMinutes(
229
- date.getMinutes() + amount,
228
+ return date.setTime(
229
+ date.getTime() + (amount * 60000),
230
230
  );
231
231
  case 'hour':
232
232
  case 'hours':
233
- return date.setHours(
234
- date.getHours() + amount,
233
+ return date.setTime(
234
+ date.getTime() + (amount * 3600000),
235
235
  );
236
236
  case 'week':
237
237
  case 'weeks':
@@ -382,7 +382,19 @@
382
382
  * @return {DateTime} The DateTime object.
383
383
  */
384
384
  function setOffsetTime(date, time) {
385
- return date.setTime(time + (date.getTimeZoneOffset() * 60000));
385
+ const oldOffset = date.getTimeZoneOffset();
386
+
387
+ const newTime = time + (oldOffset * 60000);
388
+ const newDate = date.setTime(newTime);
389
+
390
+ const offset = newDate.getTimeZoneOffset();
391
+
392
+ if (oldOffset === offset) {
393
+ return newDate;
394
+ }
395
+
396
+ // compensate for DST transitions
397
+ return newDate.setTime(newTime - ((oldOffset - offset) * 60000));
386
398
  }
387
399
 
388
400
  /**