diff --git a/addons/web/static/src/core/l10n/dates.js b/addons/web/static/src/core/l10n/dates.js index 0ef4789aee4..bd63447c38c 100644 --- a/addons/web/static/src/core/l10n/dates.js +++ b/addons/web/static/src/core/l10n/dates.js @@ -246,7 +246,7 @@ export const strftimeToLuxonFormat = memoize(function strftimeToLuxonFormat(form if (inToken && normalizeFormatTable[character] !== undefined) { character = normalizeFormatTable[character]; } else { - character = "[" + character + "]"; // moment.js escape + character = "'" + character + "'"; // luxon escape } } output.push(character); diff --git a/addons/web/static/tests/core/l10n/dates_tests.js b/addons/web/static/tests/core/l10n/dates_tests.js index f6d462dc6be..c754befd4ce 100644 --- a/addons/web/static/tests/core/l10n/dates_tests.js +++ b/addons/web/static/tests/core/l10n/dates_tests.js @@ -322,6 +322,24 @@ QUnit.module( unpatch(localization, "patch loc"); }); + QUnit.test("parseDateTime with escaped characters (eg. Basque locale)", async (assert) => { + const dateFormat = strftimeToLuxonFormat("%a, %Y.eko %bren %da"); + const timeFormat = strftimeToLuxonFormat("%H:%M:%S"); + patch(localization, "patch loc", { + dateFormat, + timeFormat, + dateTimeFormat: `${dateFormat} ${timeFormat}`, + }); + + const dateTimeFormat = `${dateFormat} ${timeFormat}`; + assert.equal(dateTimeFormat, "ccc, yyyy.'e''k''o' MMM'r''e''n' dd'a' HH:mm:ss"); + assert.equal( + parseDateTime("1985-01-31 08:30:00").toFormat(dateTimeFormat), + "Thu, 1985.eko Janren 31a 08:30:00" + ); + unpatch(localization, "patch loc"); + }); + QUnit.test("parse smart date input", async (assert) => { patchDate(2020, 0, 1, 0, 0, 0); // 2020-01-01 00:00:00