summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Balland-Poirier <laurent.balland-poirier@laposte.net>2016-08-03 11:56:16 +0200
committerAndras Timar <andras.timar@collabora.com>2016-08-15 10:28:39 +0200
commitb6abb5722f5984cf9dc6a8d71d5275390f7c9882 (patch)
tree3b4433211c4c3355f724216078d35c8b7258a00d
parent56e4cffdb5c3ac465ac7ffce1dc327fffe220d48 (diff)
tdf#101147 New approach to fix minute/month detection
Other formats may be differently interpreted HH YY/MM => Month expected HH DD/MM => Month expected Change-Id: Iabb17911bf2907c02b6b898052b6933692f8074a Reviewed-on: https://gerrit.libreoffice.org/27887 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins <ci@libreoffice.org> (cherry picked from commit 21639ac7f5b075808925186cdd5a102eb8d7a02a)
-rw-r--r--svl/source/numbers/zforscan.cxx10
1 files changed, 4 insertions, 6 deletions
diff --git a/svl/source/numbers/zforscan.cxx b/svl/source/numbers/zforscan.cxx
index 117c7f2e698a..58034164a006 100644
--- a/svl/source/numbers/zforscan.cxx
+++ b/svl/source/numbers/zforscan.cxx
@@ -1162,6 +1162,8 @@ sal_Int32 ImpSvNumberformatScan::ScanType()
That are the Excel rules. BUT, we break it because certainly
in something like {HH YYYY-MM-DD} the MM is NOT meant to be
minute, so not if MM is between YY and DD or DD and YY.
+ Actually not if any date specific keyword followed a time
+ setting keyword.
*/
nIndexPre = PreviousKeyword(i);
nIndexNex = NextKeyword(i);
@@ -1169,12 +1171,7 @@ sal_Int32 ImpSvNumberformatScan::ScanType()
nIndexPre == NF_KEY_HH || // HH
nIndexNex == NF_KEY_S || // S
nIndexNex == NF_KEY_SS || // SS
- (bIsTimeDetected &&
- !(((nIndexPre == NF_KEY_YY || nIndexPre == NF_KEY_YYYY) &&
- (nIndexNex == NF_KEY_D || nIndexNex == NF_KEY_DD)) ||
- ((nIndexPre == NF_KEY_D || nIndexPre == NF_KEY_DD) &&
- (nIndexNex == NF_KEY_YY || nIndexNex == NF_KEY_YYYY)))
- ) || // tdf#101147
+ bIsTimeDetected || // tdf#101147
PreviousChar(i) == '[' ) // [M
{
eNewType = css::util::NumberFormat::TIME;
@@ -1212,6 +1209,7 @@ sal_Int32 ImpSvNumberformatScan::ScanType()
case NF_KEY_R : // R
case NF_KEY_RR : // RR
eNewType = css::util::NumberFormat::DATE;
+ bIsTimeDetected = false;
break;
case NF_KEY_CCC: // CCC
eNewType = css::util::NumberFormat::CURRENCY;