Skip to content

Commit 1f99fdd

Browse files
authored
fix ISO year-ordinal strings with offsets (#966)
Fixes #892
1 parent e0c8f87 commit 1f99fdd

File tree

3 files changed

+21
-2
lines changed

3 files changed

+21
-2
lines changed

scripts/bootstrap.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ global.Duration = luxon.Duration;
44
global.Interval = luxon.Interval;
55
global.Settings = luxon.Settings;
66
global.Info = luxon.Info;
7+
global.IANAZone = luxon.IANAZone;

src/impl/regexParser.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,11 @@ const extractISOWeekTimeAndOffset = combineExtractors(
267267
extractISOTime,
268268
extractISOOffset
269269
);
270-
const extractISOOrdinalDataAndTime = combineExtractors(extractISOOrdinalData, extractISOTime);
270+
const extractISOOrdinalDateAndTime = combineExtractors(
271+
extractISOOrdinalData,
272+
extractISOTime,
273+
extractISOOffset
274+
);
271275
const extractISOTimeAndOffset = combineExtractors(extractISOTime, extractISOOffset);
272276

273277
/**
@@ -279,7 +283,7 @@ export function parseISODate(s) {
279283
s,
280284
[isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],
281285
[isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset],
282-
[isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDataAndTime],
286+
[isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDateAndTime],
283287
[isoTimeCombinedRegex, extractISOTimeAndOffset]
284288
);
285289
}

test/datetime/regexParse.test.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,20 @@ test("DateTime.fromISO() accepts year-ordinalTtime", () => {
435435
});
436436
});
437437

438+
test("DateTime.fromISO() accepts year-ordinalTtime+offset", () => {
439+
const dt = DateTime.fromISO("2016-200T09:24:15.123+0600", { setZone: true });
440+
expect(dt.zone.name).toBe("UTC+6");
441+
expect(dt.toObject()).toEqual({
442+
year: 2016,
443+
month: 7,
444+
day: 18,
445+
hour: 9,
446+
minute: 24,
447+
second: 15,
448+
millisecond: 123
449+
});
450+
});
451+
438452
test("DateTime.fromISO() accepts hour:minute:second.millisecond", () => {
439453
const { year, month, day } = DateTime.now();
440454
isSame("09:24:15.123", {

0 commit comments

Comments
 (0)