williamr@2: // Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@4: // under the terms of "Eclipse Public License v1.0" williamr@2: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: #ifndef __CALENDARCONVERTER_H__ williamr@2: #define __CALENDARCONVERTER_H__ williamr@2: williamr@4: // System includes williamr@2: #include williamr@2: #include williamr@2: williamr@2: class TChineseDate williamr@2: /** Chinese date. williamr@2: williamr@2: Its public member data is the year cycle, the year (1-60), the month (1-12), whether or williamr@2: not the month is a leap month, and the day in the month (1-29 or 30). williamr@2: @publishedAll williamr@2: @released */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C TChineseDate(); williamr@2: IMPORT_C TBool operator==(const TChineseDate& aDate) const; williamr@2: public: williamr@2: /** The year cycle. */ williamr@2: TInt iCycle; williamr@2: /** The year (1-60). */ williamr@2: TInt iYear; williamr@2: /** The month (1-12). */ williamr@2: TInt iMonth; williamr@2: /** Whether or not the month is a leap month. */ williamr@2: TBool iLeapMonth; williamr@2: /** The day in the month (1-29 or 30). */ williamr@2: TInt iDay; williamr@2: }; williamr@2: williamr@2: williamr@2: class CChineseCalendarConverter : public CBase williamr@2: /** Converts between TDateTime and TChineseDate formats in both directions. Chinese dates williamr@2: are calculated using the -2636 epoch. This is equivalent to 2637 BCE (Before Common Era). williamr@2: @publishedAll williamr@2: @released */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C static CChineseCalendarConverter* NewL(); williamr@2: /** Creates a Chinese date from a TDateTime value. williamr@2: williamr@2: @param aDateTime The date/time value to convert. williamr@2: @param aChineseDate On return, contains the Chinese date. If the supplied date williamr@2: is invalid, this contains KErrArgument. */ williamr@2: virtual void DateTimeToChineseL(const TDateTime& aDateTime, TChineseDate& aChineseDate)=0; williamr@2: williamr@2: /** Creates a TDateTime value from a Chinese date. williamr@2: williamr@2: @param aChineseDate A date in Chinese format. williamr@2: @param aDateTime On return, contains a date value. If the supplied date is williamr@2: invalid, this contains KErrArgument. */ williamr@2: virtual void ChineseToDateTimeL(const TChineseDate& aChineseDate, TDateTime& aDateTime)=0; williamr@2: williamr@2: /** Returns the range of dates, in standard date format, acceptable to the Chinese williamr@2: calendar converter. williamr@2: williamr@2: @param aLower On return, contains the lower limit of the converter. williamr@2: @param aUpper On return, contains the upper limit of the converter. */ williamr@2: virtual void DateRange(TDateTime& aLower, TDateTime& aUpper)=0; williamr@2: williamr@2: /** Returns the range of dates, in Chinese date format, acceptable to the Chinese williamr@2: calendar converter. williamr@2: williamr@2: @param aLower On return, contains the lower limit of the converter. williamr@2: @param aUpper On return, contains the upper limit of the converter. */ williamr@2: virtual void DateRange(TChineseDate& aLower, TChineseDate& aUpper)=0; williamr@2: /** Returns the result of the last calendar conversion as a Julian date. williamr@2: williamr@2: @return The Julian date. */ williamr@2: virtual TReal JulianDate() __SOFTFP =0; williamr@2: }; williamr@2: #endif