diff --git a/src/scripting_api/aform.js b/src/scripting_api/aform.js
index 5719de4385640..d72e545223efe 100644
--- a/src/scripting_api/aform.js
+++ b/src/scripting_api/aform.js
@@ -140,11 +140,26 @@ class AForm {
     return date;
   }
 
-  _parseDate(cFormat, cDate) {
+  _parseDate(cFormat, cDate, strict = false) {
     let date = null;
     try {
       date = this._util.scand(cFormat, cDate);
     } catch {}
+    if (!date) {
+      if (strict) {
+        return null;
+      }
+      let format = cFormat;
+      if (/mm(?!m)/.test(format)) {
+        format = format.replace("mm", "m");
+      }
+      if (/dd(?!d)/.test(format)) {
+        format = format.replace("dd", "d");
+      }
+      try {
+        date = this._util.scand(format, cDate);
+      } catch {}
+    }
     if (!date) {
       date = Date.parse(cDate);
       date = isNaN(date)
@@ -379,7 +394,7 @@ class AForm {
       return;
     }
 
-    if (this._parseDate(cFormat, value) === null) {
+    if (this._parseDate(cFormat, value, /* strict = */ true) === null) {
       const invalid = GlobalConstants.IDS_INVALID_DATE;
       const invalid2 = GlobalConstants.IDS_INVALID_DATE2;
       const err = `${invalid} ${this._mkTargetName(
diff --git a/test/unit/scripting_spec.js b/test/unit/scripting_spec.js
index 69dfa3207b02f..505a990ff37ad 100644
--- a/test/unit/scripting_spec.js
+++ b/test/unit/scripting_spec.js
@@ -628,6 +628,10 @@ describe("Scripting", function () {
         await check("12", "mm", "2000/12/01");
         await check("2022", "yyyy", "2022/01/01");
         await check("a1$9bbbb21", "dd/mm/yyyy", "2021/09/01");
+        await check("1/2/2024", "dd/mm/yyyy", "2024/02/01");
+        await check("01/2/2024", "dd/mm/yyyy", "2024/02/01");
+        await check("1/02/2024", "dd/mm/yyyy", "2024/02/01");
+        await check("01/02/2024", "dd/mm/yyyy", "2024/02/01");
 
         // The following test isn't working as expected because
         // the quickjs date parser has been replaced by the browser one