summaryrefslogtreecommitdiff
path: root/svl
diff options
context:
space:
mode:
authorLaurent Balland-Poirier <laurent.balland-poirier@laposte.net>2016-08-03 11:56:16 +0200
committerEike Rathke <erack@redhat.com>2016-08-04 23:37:07 +0000
commit85badce0b8dce3c1c1cc4b7af2d71ec2ff8da4ef (patch)
tree0b8b0eac8222abfede1b2e5f15a1caf0725fe8b9 /svl
parent0b168901ed5e767651262686af65994029b3039b (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/27886 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins <ci@libreoffice.org>
Diffstat (limited to 'svl')
-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 7e4b2593e7eb..228afe76d628 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;