From fa0ad0e5ce5ea837c55adf64bd2e85587b099b55 Mon Sep 17 00:00:00 2001 From: Eike Rathke Date: Fri, 12 Jul 2019 11:16:07 +0200 Subject: Resolves: tdf#126342 obtain date particle order from pattern match MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ... if there was any. In the NF_EVALDATEFORMAT_FORMAT_INTL case the input may match a current locale's pattern instead of a format's locale's pattern and patterns' (format locale + current locale) date orders may be different from the format's date order. Change-Id: I3aeaa6c361f98fe80f69c4f5d975fca892dac6ea Reviewed-on: https://gerrit.libreoffice.org/75481 Reviewed-by: Eike Rathke Tested-by: Jenkins (cherry picked from commit 7de96e9f7b69354fd5b15e1276678000bc386568) Reviewed-on: https://gerrit.libreoffice.org/75491 Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara (cherry picked from commit 7af89de46ff4a40a8161fd629584d54cfdeadee1) Reviewed-on: https://gerrit.libreoffice.org/76934 Tested-by: Jenkins CollaboraOffice Reviewed-by: Andras Timar --- svl/source/numbers/zforfind.cxx | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'svl') diff --git a/svl/source/numbers/zforfind.cxx b/svl/source/numbers/zforfind.cxx index 0ec1cd812418..dfb66e3de235 100644 --- a/svl/source/numbers/zforfind.cxx +++ b/svl/source/numbers/zforfind.cxx @@ -1699,7 +1699,26 @@ bool ImpSvNumberInputScan::GetDateRef( double& fDays, sal_uInt16& nCounter ) else { bFormatTurn = true; - DateFmt = mpFormat->GetDateOrder(); + // Even if the format pattern is to be preferred, the input may + // have matched a pattern of the current locale, which then + // again is to be preferred. Both date orders can be different + // so we need to obtain the actual match. For example ISO + // YYYY-MM-DD format vs locale's DD.MM.YY input. + if (!GetDatePatternOrder()) + { + // No pattern match => format match. + DateFmt = mpFormat->GetDateOrder(); + } + else + { + // Pattern match. Note that patterns may have been + // constructed from the format's locale and prepended to + // the current locale's patterns, it doesn't necessarily + // mean a current locale's pattern was matched, but may if + // the format's locale's patterns didn't match, which were + // tried first. + DateFmt = GetDateOrder(); + } } break; default: -- cgit v1.2.3