// --------------------------------------------------------------------------- // TPresCondValidity::ParseFromXMLTimeString() // --------------------------------------------------------------------------- // TInt TPresCondValidity::ParseFromXMLTimeString(const TDesC& aXMLTimeString, TTime& aUTCDateTime) { OPENG_DP(D_OPENG_LIT( " TPresCondValidity::ParseFromXMLTimeString()" ) ); OPENG_DP(D_OPENG_LIT( " ParseFromXMLTimeString aXMLTimeString = %S"), &aXMLTimeString); TInt err(KErrNone); // Initializing the locale TLocale myLocale, systemLocale; myLocale.Refresh(); systemLocale.Refresh(); myLocale.SetDateFormat(EDateJapanese); myLocale.SetDateSeparator('-',1); myLocale.SetDateSeparator('-',2); myLocale.SetDateSeparator('T',3); myLocale.SetTimeFormat(ETime24); myLocale.SetTimeSeparator(':',1); myLocale.SetTimeSeparator(':',2); myLocale.SetTimeSeparator(' ',3); myLocale.Set(); TTime myTime; TTime myUTCtime; TChar uTCtimeSign(aXMLTimeString[23]); // 23 is ascii T // parsing main time TBuf<KPresDateTimeBufLength> dateTimeBuffer(aXMLTimeString); dateTimeBuffer.Delete(KPresDTWithoutUTCLength-1,6); dateTimeBuffer.Replace(KPresDTSeperatorPos,1,KPresSpaceString); myTime.Parse(dateTimeBuffer); // parsing utc time TBuf<KPresDateTimeBufLength> uTCbuffer(aXMLTimeString); uTCbuffer.Delete(0,KPresDTWithoutUTCLength); myUTCtime.Parse(uTCbuffer); TDateTime uTCDateTime = myUTCtime.DateTime(); // adding or substracting utc from main time if(uTCtimeSign=='+') // if diff is positive { aUTCDateTime = myTime - TTimeIntervalHours(uTCDateTime.Hour()); aUTCDateTime = aUTCDateTime - TTimeIntervalMinutes(uTCDateTime.Minute()); } else if(uTCtimeSign=='-') { aUTCDateTime = myTime + TTimeIntervalHours(uTCDateTime.Hour()); aUTCDateTime = aUTCDateTime + TTimeIntervalMinutes(uTCDateTime.Minute()); } else err = KErrArgument; // putting the system locale back systemLocale.Set(); return err; }