summaryrefslogtreecommitdiff
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-05 00:06:26 +0000
commit21639ac7f5b075808925186cdd5a102eb8d7a02a (patch)
tree74f5e235831001211a768f65eed8ba21cfa688f7
parent97c0d2cf817d0d995dbc3d0901dbbfb4491e9664 (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>
-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 608d0f312318..1552d8106607 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;