@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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fr0st/datetime",
3
- "version": "5.1.5",
3
+ "version": "5.1.6",
4
4
  "description": "FrostDateTime is a free, open-source date manipulation library for JavaScript.",
5
5
  "keywords": [
6
6
  "date",
package/src/helpers.js CHANGED
@@ -103,18 +103,18 @@ export function modify(date, amount, timeUnit) {
103
103
  switch (timeUnit) {
104
104
  case 'second':
105
105
  case 'seconds':
106
- return date.setSeconds(
107
- date.getSeconds() + amount,
106
+ return date.setTime(
107
+ date.getTime() + (amount * 1000),
108
108
  );
109
109
  case 'minute':
110
110
  case 'minutes':
111
- return date.setMinutes(
112
- date.getMinutes() + amount,
111
+ return date.setTime(
112
+ date.getTime() + (amount * 60000),
113
113
  );
114
114
  case 'hour':
115
115
  case 'hours':
116
- return date.setHours(
117
- date.getHours() + amount,
116
+ return date.setTime(
117
+ date.getTime() + (amount * 3600000),
118
118
  );
119
119
  case 'week':
120
120
  case 'weeks':
@@ -268,5 +268,17 @@ export function parseFactory() {
268
268
  * @return {DateTime} The DateTime object.
269
269
  */
270
270
  export function setOffsetTime(date, time) {
271
- return date.setTime(time + (date.getTimeZoneOffset() * 60000));
271
+ const oldOffset = date.getTimeZoneOffset();
272
+
273
+ const newTime = time + (oldOffset * 60000);
274
+ const newDate = date.setTime(newTime);
275
+
276
+ const offset = newDate.getTimeZoneOffset();
277
+
278
+ if (oldOffset === offset) {
279
+ return newDate;
280
+ }
281
+
282
+ // compensate for DST transitions
283
+ return newDate.setTime(newTime - ((oldOffset - offset) * 60000));
272
284
  };