Skip to content

Commit 34add62

Browse files
authored
Prevent error from being thrown in IANAZone.offset (#906)
1 parent 88eae19 commit 34add62

2 files changed

Lines changed: 19 additions & 2 deletions

File tree

‎src/zones/IANAZone.js‎

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,11 @@ export default class IANAZone extends Zone {
152152

153153
/** @override **/
154154
offset(ts) {
155-
const date = new Date(ts),
156-
dtf = makeDTF(this.name),
155+
const date = new Date(ts);
156+
157+
if (isNaN(date)) return NaN;
158+
159+
const dtf = makeDTF(this.name),
157160
[year, month, day, hour, minute, second] = dtf.formatToParts
158161
? partsOffset(dtf, date)
159162
: hackyOffset(dtf, date),

‎test/datetime/math.test.js‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,13 @@ test("DateTime#plus renders invalid when out of max. datetime range using second
116116
expect(d.isValid).toBe(false);
117117
});
118118

119+
test("DateTime#plus renders invalid when out of max. datetime range using IANAZone", () => {
120+
const d = DateTime.utc(1970, 1, 1, 0, 0, 0, 0)
121+
.setZone("America/Los_Angeles")
122+
.plus({ second: 1e8 * 24 * 60 * 60 + 1 });
123+
expect(d.isValid).toBe(false);
124+
});
125+
119126
test("DateTime#plus handles fractional days", () => {
120127
const d = DateTime.fromISO("2016-01-31T10:00");
121128
expect(d.plus({ days: 0.8 })).toEqual(d.plus({ hours: (24 * 4) / 5 }));
@@ -205,6 +212,13 @@ test("DateTime#minus renders invalid when out of max. datetime range using secon
205212
expect(d.isValid).toBe(false);
206213
});
207214

215+
test("DateTime#plus renders invalid when out of max. datetime range using IANAZone", () => {
216+
const d = DateTime.utc(1970, 1, 1, 0, 0, 0, 0)
217+
.setZone("America/Los_Angeles")
218+
.minus({ second: 1e8 * 24 * 60 * 60 + 1 });
219+
expect(d.isValid).toBe(false);
220+
});
221+
208222
test("DateTime#minus handles fractional days", () => {
209223
const d = DateTime.fromISO("2016-01-31T10:00");
210224
expect(d.minus({ days: 0.8 })).toEqual(d.minus({ hours: (24 * 4) / 5 }));

0 commit comments

Comments
 (0)