summaryrefslogtreecommitdiff
path: root/svtools/source
diff options
context:
space:
mode:
authorEike Rathke <er@openoffice.org>2001-08-27 14:22:22 +0000
committerEike Rathke <er@openoffice.org>2001-08-27 14:22:22 +0000
commitb3498153293e54fe2a36a021bd4395968126bd67 (patch)
tree359e1abc1c270e29d5fb182dbd91396896974bf8 /svtools/source
parentd8b359637f444d8c50d42c101f838342feae1e0c (diff)
#87282# date i/o without gregorian class Date
Diffstat (limited to 'svtools/source')
-rw-r--r--svtools/source/numbers/zforfind.cxx35
-rw-r--r--svtools/source/numbers/zformat.cxx71
2 files changed, 52 insertions, 54 deletions
diff --git a/svtools/source/numbers/zforfind.cxx b/svtools/source/numbers/zforfind.cxx
index 2787771ca89e..530b1648eb94 100644
--- a/svtools/source/numbers/zforfind.cxx
+++ b/svtools/source/numbers/zforfind.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: zforfind.cxx,v $
*
- * $Revision: 1.19 $
+ * $Revision: 1.20 $
*
- * last change: $Author: er $ $Date: 2001-08-27 11:54:14 $
+ * last change: $Author: er $ $Date: 2001-08-27 15:22:22 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -884,7 +884,7 @@ USHORT ImpSvNumberInputScan::ImplGetYear( USHORT nIndex )
//---------------------------------------------------------------------------
// GetDateRef
-BOOL ImpSvNumberInputScan::GetDateRef( Date& aDt, USHORT& nCounter,
+BOOL ImpSvNumberInputScan::GetDateRef( double& fDays, USHORT& nCounter,
const SvNumberformat* pFormat )
{
using namespace ::com::sun::star::i18n;
@@ -914,7 +914,7 @@ BOOL ImpSvNumberInputScan::GetDateRef( Date& aDt, USHORT& nCounter,
CalendarWrapper* pCal = pFormatter->GetCalendar();
for ( int nTryOrder = 1; nTryOrder <= nFormatOrder; nTryOrder++ )
{
- pCal->setGregorianDateTime( aDt );
+ pCal->setGregorianDateTime( Date() ); // today
DateFormat DateFmt;
switch ( eEDF )
{
@@ -1157,14 +1157,13 @@ BOOL ImpSvNumberInputScan::GetDateRef( Date& aDt, USHORT& nCounter,
if ( res && pCal->isValid() )
{
- aDt = pCal->getGregorianDateTime();
+ double fDiff = DateTime(*pNullDate) - pCal->getEpochStart();
+ fDays = floor( pCal->getDateTime() );
+ fDays -= fDiff;
nTryOrder = nFormatOrder; // break for
}
else
- {
res = FALSE;
- aDt = Date(); // next try
- }
}
return res;
@@ -2251,28 +2250,20 @@ BOOL ImpSvNumberInputScan::IsNumberFormat(
case NUMBERFORMAT_DATE:
{
- Date aDt; // today
USHORT nCounter = 0; // dummy here
- res = GetDateRef(aDt, nCounter, pFormat); // date->aDt
- if ( res )
- {
- long nDate = (long) (aDt - *pNullDate);
- fOutNumber = (double) nDate;
- }
+ res = GetDateRef( fOutNumber, nCounter, pFormat );
}
break;
case NUMBERFORMAT_DATETIME:
{
- Date aDt; // today
- USHORT nCounter; // needed here
- res = GetDateRef(aDt, nCounter, pFormat); // date->aDt
- double fTime;
- GetTimeRef(fTime, nCounter, nAnzNums-nCounter);
+ USHORT nCounter = 0; // needed here
+ res = GetDateRef( fOutNumber, nCounter, pFormat );
if ( res )
{
- long nDate = (long) (aDt - *pNullDate);
- fOutNumber = (double) nDate + fTime;
+ double fTime;
+ GetTimeRef( fTime, nCounter, nAnzNums - nCounter );
+ fOutNumber += fTime;
}
}
break;
diff --git a/svtools/source/numbers/zformat.cxx b/svtools/source/numbers/zformat.cxx
index c4c30d0b1fec..45fb7245f5ca 100644
--- a/svtools/source/numbers/zformat.cxx
+++ b/svtools/source/numbers/zformat.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: zformat.cxx,v $
*
- * $Revision: 1.29 $
+ * $Revision: 1.30 $
*
- * last change: $Author: er $ $Date: 2001-08-02 14:53:08 $
+ * last change: $Author: er $ $Date: 2001-08-27 15:22:22 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -2322,9 +2322,9 @@ BOOL SvNumberformat::ImpGetTimeOutput(double fNumber,
{
if ( !bCalendarSet )
{
- DateTime aDateTime( *(rScan.GetNullDate()) );
- aDateTime += fNumberOrig;
- GetCal().setGregorianDateTime( aDateTime );
+ double fDiff = DateTime(*(rScan.GetNullDate())) - GetCal().getEpochStart();
+ fDiff += fNumberOrig;
+ GetCal().setDateTime( fDiff );
bCalendarSet = TRUE;
}
if (cAmPm == 'a')
@@ -2474,10 +2474,10 @@ BOOL SvNumberformat::ImpGetDateOutput(double fNumber,
OutString = rScan.GetErrorString();
return FALSE;
}
- long nNum = (long) floor(fNumber);
- Date aDate = *(rScan.GetNullDate()) + nNum;
CalendarWrapper& rCal = GetCal();
- rCal.setGregorianDateTime( aDate );
+ double fDiff = DateTime(*(rScan.GetNullDate())) - rCal.getEpochStart();
+ fDiff += floor( fNumber );
+ rCal.setDateTime( fDiff );
String aOrgCalendar; // empty => not changed yet
double fOrgDateTime;
BOOL bOtherCalendar = IsOtherCalendar( NumFor[nIx] );
@@ -2550,14 +2550,22 @@ BOOL SvNumberformat::ImpGetDateOutput(double fNumber,
case NF_KEY_Q: // Q
{
OutString += 'Q';
- USHORT nMonth = aDate.GetMonth();
- OutString += sal_Unicode( '1' + ((nMonth-1) / 3) );
+ if ( bOtherCalendar )
+ SwitchToGregorianCalendar( aOrgCalendar, fOrgDateTime );
+ sal_Int16 nVal = rCal.getValue( CalendarFieldIndex::MONTH );
+ OutString += sal_Unicode( '1' + (nVal / 3) );
+ if ( bOtherCalendar )
+ SwitchToOtherCalendar( aOrgCalendar, fOrgDateTime );
}
break;
case NF_KEY_QQ: // QQ
{
- USHORT nMonth = aDate.GetMonth();
- OutString += rLoc().getQuarterWord( (nMonth-1) / 3 );
+ if ( bOtherCalendar )
+ SwitchToGregorianCalendar( aOrgCalendar, fOrgDateTime );
+ sal_Int16 nVal = rCal.getValue( CalendarFieldIndex::MONTH );
+ OutString += rLoc().getQuarterWord( nVal / 3 );
+ if ( bOtherCalendar )
+ SwitchToOtherCalendar( aOrgCalendar, fOrgDateTime );
}
break;
case NF_KEY_D: // D
@@ -2596,7 +2604,6 @@ BOOL SvNumberformat::ImpGetDateOutput(double fNumber,
break;
case NF_KEY_YY: // YY
{
-//! TODO: what about negative values? abs and append era?
if ( bOtherCalendar )
SwitchToGregorianCalendar( aOrgCalendar, fOrgDateTime );
sal_Int16 nVal = rCal.getValue( CalendarFieldIndex::YEAR );
@@ -2609,7 +2616,6 @@ BOOL SvNumberformat::ImpGetDateOutput(double fNumber,
break;
case NF_KEY_YYYY: // YYYY
{
-//! TODO: what about negative values? abs and append era?
if ( bOtherCalendar )
SwitchToGregorianCalendar( aOrgCalendar, fOrgDateTime );
sal_Int16 nVal = rCal.getValue( CalendarFieldIndex::YEAR );
@@ -2620,7 +2626,6 @@ BOOL SvNumberformat::ImpGetDateOutput(double fNumber,
break;
case NF_KEY_EC: // E
{
-//! TODO: what about negative values? abs and append era?
sal_Int16 nVal = rCal.getValue( CalendarFieldIndex::YEAR );
OutString += IntToString( nIx, nVal );
}
@@ -2628,7 +2633,6 @@ BOOL SvNumberformat::ImpGetDateOutput(double fNumber,
case NF_KEY_EEC: // EE
case NF_KEY_R: // R
{
-//! TODO: what about negative values? abs and append era?
sal_Int16 nVal = rCal.getValue( CalendarFieldIndex::YEAR );
OutString += IntToString( nIx, nVal, 2 );
}
@@ -2685,7 +2689,6 @@ BOOL SvNumberformat::ImpGetDateOutput(double fNumber,
sal_Int16 nVal = rCal.getValue( CalendarFieldIndex::ERA );
OutString += rCal.getDisplayName( CalendarDisplayIndex::ERA,
nVal, 1 );
-//! TODO: what about negative values? abs and append era?
nVal = rCal.getValue( CalendarFieldIndex::YEAR );
OutString += IntToString( nIx, nVal, 2 );
}
@@ -2712,10 +2715,10 @@ BOOL SvNumberformat::ImpGetDateTimeOutput(double fNumber,
double fNum2 = fNumber - fNum1; // -> Zeit
long nNum1 = (long) fNum1;
- DateTime aDateTime( *(rScan.GetNullDate()) );
- aDateTime += fNumber;
CalendarWrapper& rCal = GetCal();
- rCal.setGregorianDateTime( aDateTime );
+ double fDiff = DateTime(*(rScan.GetNullDate())) - rCal.getEpochStart();
+ fDiff += fNumber;
+ rCal.setDateTime( fDiff );
String aOrgCalendar; // empty => not changed yet
double fOrgDateTime;
BOOL bOtherCalendar = IsOtherCalendar( NumFor[nIx] );
@@ -2909,15 +2912,24 @@ BOOL SvNumberformat::ImpGetDateTimeOutput(double fNumber,
}
break;
case NF_KEY_Q: // Q
+ {
+ OutString += 'Q';
+ if ( bOtherCalendar )
+ SwitchToGregorianCalendar( aOrgCalendar, fOrgDateTime );
+ sal_Int16 nVal = rCal.getValue( CalendarFieldIndex::MONTH );
+ OutString += sal_Unicode( '1' + (nVal / 3) );
+ if ( bOtherCalendar )
+ SwitchToOtherCalendar( aOrgCalendar, fOrgDateTime );
+ }
+ break;
case NF_KEY_QQ: // QQ
{
- USHORT nMonth = aDateTime.GetMonth();
- OutString += rLoc().getQuarterWord( (nMonth-1) / 3 );
- if (rInfo.nTypeArray[i] == NF_KEY_QQ)
- {
- OutString += ' ';
- OutString += IntToString( nIx, aDateTime.GetYear() );
- }
+ if ( bOtherCalendar )
+ SwitchToGregorianCalendar( aOrgCalendar, fOrgDateTime );
+ sal_Int16 nVal = rCal.getValue( CalendarFieldIndex::MONTH );
+ OutString += rLoc().getQuarterWord( nVal / 3 );
+ if ( bOtherCalendar )
+ SwitchToOtherCalendar( aOrgCalendar, fOrgDateTime );
}
break;
case NF_KEY_D: // D
@@ -2956,7 +2968,6 @@ BOOL SvNumberformat::ImpGetDateTimeOutput(double fNumber,
break;
case NF_KEY_YY: // YY
{
-//! TODO: what about negative values? abs and append era?
if ( bOtherCalendar )
SwitchToGregorianCalendar( aOrgCalendar, fOrgDateTime );
sal_Int16 nVal = rCal.getValue( CalendarFieldIndex::YEAR );
@@ -2969,7 +2980,6 @@ BOOL SvNumberformat::ImpGetDateTimeOutput(double fNumber,
break;
case NF_KEY_YYYY: // YYYY
{
-//! TODO: what about negative values? abs and append era?
if ( bOtherCalendar )
SwitchToGregorianCalendar( aOrgCalendar, fOrgDateTime );
sal_Int16 nVal = rCal.getValue( CalendarFieldIndex::YEAR );
@@ -2980,7 +2990,6 @@ BOOL SvNumberformat::ImpGetDateTimeOutput(double fNumber,
break;
case NF_KEY_EC: // E
{
-//! TODO: what about negative values? abs and append era?
sal_Int16 nVal = rCal.getValue( CalendarFieldIndex::YEAR );
OutString += IntToString( nIx, nVal );
}
@@ -2988,7 +2997,6 @@ BOOL SvNumberformat::ImpGetDateTimeOutput(double fNumber,
case NF_KEY_EEC: // EE
case NF_KEY_R: // R
{
-//! TODO: what about negative values? abs and append era?
sal_Int16 nVal = rCal.getValue( CalendarFieldIndex::YEAR );
OutString += IntToString( nIx, nVal, 2 );
}
@@ -3043,7 +3051,6 @@ BOOL SvNumberformat::ImpGetDateTimeOutput(double fNumber,
sal_Int16 nVal = rCal.getValue( CalendarFieldIndex::ERA );
OutString += rCal.getDisplayName( CalendarDisplayIndex::ERA,
nVal, 1 );
-//! TODO: what about negative values? abs and append era?
nVal = rCal.getValue( CalendarFieldIndex::YEAR );
OutString += IntToString( nIx, nVal, 2 );
}