diff options
author | Eike Rathke <er@openoffice.org> | 2001-08-27 14:22:22 +0000 |
---|---|---|
committer | Eike Rathke <er@openoffice.org> | 2001-08-27 14:22:22 +0000 |
commit | b3498153293e54fe2a36a021bd4395968126bd67 (patch) | |
tree | 359e1abc1c270e29d5fb182dbd91396896974bf8 /svtools/source | |
parent | d8b359637f444d8c50d42c101f838342feae1e0c (diff) |
#87282# date i/o without gregorian class Date
Diffstat (limited to 'svtools/source')
-rw-r--r-- | svtools/source/numbers/zforfind.cxx | 35 | ||||
-rw-r--r-- | svtools/source/numbers/zformat.cxx | 71 |
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 ); } |