luxon-parser
Version:
Add DateTime.fromHuman() and DateTime.fromAny() functions to Luxon that can parse a wide range of date formats including human-input dates
31 lines (30 loc) • 904 B
JavaScript
// src/luxon-parser.ts
import { fromString } from "any-date-parser";
import { DateTime } from "luxon";
function dateTimeFromHuman(string, options = {}) {
const date = fromString(string, options.locale);
if (date.invalid) {
return DateTime.invalid(date.invalid);
}
return DateTime.fromJSDate(date, options);
}
function dateTimeFromAny(date, options = {}) {
if (!date) {
return DateTime.now();
} else if (date instanceof DateTime) {
return date;
} else if (date instanceof Date) {
return DateTime.fromJSDate(date, options);
} else if (typeof date === "number") {
return DateTime.fromMillis(date, options);
} else if (typeof date === "object") {
return DateTime.fromObject(date, options);
}
return dateTimeFromHuman(date, options);
}
DateTime.fromHuman = dateTimeFromHuman;
DateTime.fromAny = dateTimeFromAny;
export {
dateTimeFromAny,
dateTimeFromHuman
};