Merge pull request #14692 from calixteman/14672
[JS] - Parse a date in using the given format first and then try the default date parser
This commit is contained in:
commit
f017f295ec
@ -53,16 +53,19 @@ class AForm {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_parseDate(cFormat, cDate) {
|
_parseDate(cFormat, cDate) {
|
||||||
const ddate = Date.parse(cDate);
|
let date = null;
|
||||||
if (isNaN(ddate)) {
|
try {
|
||||||
try {
|
date = this._util.scand(cFormat, cDate);
|
||||||
return this._util.scand(cFormat, cDate);
|
} catch (error) {}
|
||||||
} catch (error) {
|
if (!date) {
|
||||||
return null;
|
date = Date.parse(cDate);
|
||||||
|
if (isNaN(date)) {
|
||||||
|
date = null;
|
||||||
|
} else {
|
||||||
|
date = new Date(date);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
return new Date(ddate);
|
|
||||||
}
|
}
|
||||||
|
return date;
|
||||||
}
|
}
|
||||||
|
|
||||||
AFMergeChange(event = globalThis.event) {
|
AFMergeChange(event = globalThis.event) {
|
||||||
|
@ -373,6 +373,10 @@ class Util extends PDFObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
scand(cFormat, cDate) {
|
scand(cFormat, cDate) {
|
||||||
|
if (typeof cDate !== "string") {
|
||||||
|
return new Date(cDate);
|
||||||
|
}
|
||||||
|
|
||||||
if (cDate === "") {
|
if (cDate === "") {
|
||||||
return new Date();
|
return new Date();
|
||||||
}
|
}
|
||||||
@ -536,15 +540,15 @@ class Util extends PDFObject {
|
|||||||
|
|
||||||
const [re, actions] = this._scandCache.get(cFormat);
|
const [re, actions] = this._scandCache.get(cFormat);
|
||||||
|
|
||||||
const matches = new RegExp(re, "g").exec(cDate);
|
const matches = new RegExp(`^${re}$`, "g").exec(cDate);
|
||||||
if (!matches || matches.length !== actions.length + 1) {
|
if (!matches || matches.length !== actions.length + 1) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
const data = {
|
const data = {
|
||||||
year: 0,
|
year: 2000,
|
||||||
month: 0,
|
month: 0,
|
||||||
day: 0,
|
day: 1,
|
||||||
hours: 0,
|
hours: 0,
|
||||||
minutes: 0,
|
minutes: 0,
|
||||||
seconds: 0,
|
seconds: 0,
|
||||||
|
@ -598,6 +598,21 @@ describe("Scripting", function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe("AFParseDateEx", function () {
|
||||||
|
it("should parse a date with a format", async () => {
|
||||||
|
const check = async (date, format, expected) => {
|
||||||
|
const value = await myeval(
|
||||||
|
`AFParseDateEx("${date}", "${format}").toISOString()`
|
||||||
|
);
|
||||||
|
expect(value).toEqual(new Date(expected).toISOString());
|
||||||
|
};
|
||||||
|
|
||||||
|
await check("05", "dd", "2000/01/05");
|
||||||
|
await check("12", "mm", "2000/12/01");
|
||||||
|
await check("2022", "yyyy", "2022/01/01");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe("AFExtractNums", function () {
|
describe("AFExtractNums", function () {
|
||||||
it("should extract numbers", async () => {
|
it("should extract numbers", async () => {
|
||||||
let value = await myeval(`AFExtractNums("123 456 789")`);
|
let value = await myeval(`AFExtractNums("123 456 789")`);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user