/** * Generates a display string showing the relative time between the two given times as COleDateTimes */ CString CLoglistUtils::ToRelativeTimeString(COleDateTime time,COleDateTime RelativeTo) { COleDateTimeSpan ts = RelativeTo - time; //years if(fabs(ts.GetTotalDays()) >= 3 * 365) return ExpandRelativeTime((int)ts.GetTotalDays()/365, IDS_YEAR_AGO, IDS_YEARS_AGO); //Months if(fabs(ts.GetTotalDays()) >= 60) return ExpandRelativeTime((int)ts.GetTotalDays()/30, IDS_MONTH_AGO, IDS_MONTHS_AGO); //Weeks if(fabs(ts.GetTotalDays()) >= 14) return ExpandRelativeTime((int)ts.GetTotalDays()/7, IDS_WEEK_AGO, IDS_WEEKS_AGO); //Days if(fabs(ts.GetTotalDays()) >= 2) return ExpandRelativeTime((int)ts.GetTotalDays(), IDS_DAY_AGO, IDS_DAYS_AGO); //hours if(fabs(ts.GetTotalHours()) >= 2) return ExpandRelativeTime((int)ts.GetTotalHours(), IDS_HOUR_AGO, IDS_HOURS_AGO); //minutes if(fabs(ts.GetTotalMinutes()) >= 2) return ExpandRelativeTime((int)ts.GetTotalMinutes(), IDS_MINUTE_AGO, IDS_MINUTES_AGO); //seconds return ExpandRelativeTime((int)ts.GetTotalSeconds(), IDS_SECOND_AGO, IDS_SECONDS_AGO); }
void CBCGPPlannerViewMonth::SetDateInterval (const COleDateTime& date1, const COleDateTime& date2) { ASSERT (date1 <= date2); COleDateTimeSpan duration (date2 - date1); m_nDuration = ((int)(duration.GetTotalDays () / 7.0)) * 7; if (m_nDuration < duration.GetTotalDays ()) { m_nDuration += 7; } if (m_nDuration < 14) { m_nDuration = 14; } else if (m_nDuration > 42) { m_nDuration = 42; } COleDateTime _date1 (date1); if (IsCompressWeekend () && CBCGPPlannerManagerCtrl::GetFirstDayOfWeek () == 0) { _date1 += COleDateTimeSpan (1, 0, 0, 0); } m_DateStart = GetFirstWeekDay2 (_date1, CBCGPPlannerManagerCtrl::GetFirstDayOfWeek () + 1); m_DateEnd = m_DateStart + COleDateTimeSpan (m_nDuration - 1, 23, 59, 59); if (m_DateEnd < m_Date || m_Date < m_DateStart) { m_Date = m_DateStart; } SetDate (m_Date); }
BOOL COptionsStats::OnInitDialog() { CPropertyPage::OnInitDialog(); CTime time(CGetSetOptions::GetTotalDate()); m_eAllDate = time.Format("%m/%d/%Y %I:%M %p"); m_eAllCopies.Format(_T("%d"), CGetSetOptions::GetTotalCopyCount()); m_eAllPastes.Format(_T("%d"), CGetSetOptions::GetTotalPasteCount()); CTime time2(CGetSetOptions::GetTripDate()); m_eTripDate = time2.Format("%m/%d/%Y %I:%M %p"); m_eTripCopies.Format(_T("%d"), CGetSetOptions::GetTripCopyCount()); m_eTripPastes.Format(_T("%d"), CGetSetOptions::GetTripPasteCount()); m_eClipsSent.Format(_T("%d"), theApp.m_lClipsSent); m_eClipsRecieved.Format(_T("%d"), theApp.m_lClipsRecieved); m_eLastStarted = theApp.m_oldtStartUp.Format(_T("%m/%d/%y %I:%M:%S")); if(theApp.m_oldtStartUp.GetHour() > 12) m_eLastStarted += " PM"; else m_eLastStarted += " AM"; COleDateTimeSpan span = COleDateTime::GetCurrentTime() - theApp.m_oldtStartUp; CString csSpan; csSpan.Format(_T(" - %d.%d.%d (D.H.M)"), (long)span.GetTotalDays(), span.GetHours(), span.GetMinutes()); m_eLastStarted += csSpan; try { m_eSavedCopies.Format(_T("%d"), theApp.m_db.execScalar(_T("SELECT COUNT(lID) FROM Main"))); m_eSavedCopyData.Format(_T("%d"), theApp.m_db.execScalar(_T("SELECT COUNT(lID) FROM Data"))); } CATCH_SQLITE_EXCEPTION __int64 size = FileSize(GetDBName()); const int MAX_FILE_SIZE_BUFFER = 255; TCHAR szFileSize[MAX_FILE_SIZE_BUFFER]; StrFormatByteSize(size, szFileSize, MAX_FILE_SIZE_BUFFER); m_eDatabaseSize = szFileSize; UpdateData(FALSE); theApp.m_Language.UpdateOptionStats(this); return TRUE; }
int CNetworkTree::OnReadGroup(_RecordsetPtr xRecordset, CString& xUserGrp, CString& xGroupId) { _variant_t TheValue = xRecordset->GetCollect( "xentercode" ); ASSERT( VT_NULL != TheValue.vt ); xGroupId = (LPCTSTR)(_bstr_t)TheValue; TheValue = xRecordset->GetCollect( "xentername" ); if ( VT_NULL == TheValue.vt ) xUserGrp = _T("<NULL>"); else xUserGrp = (LPCTSTR)(_bstr_t)TheValue; TheValue = xRecordset->GetCollect( "xexpiredate" ); if ( VT_NULL != TheValue.vt ) { COleDateTime tt = TheValue; tt.SetTime( 0, 0, 0 ); COleDateTimeSpan tSpan = COleDateTime::GetCurrentTime() - tt; if ( tSpan.GetTotalDays() > 0 ) return EBase_NoPay; } return 0; }
void CChartAxis::CalculateTickIncrement() { if (!m_bAutoTicks) return; if (m_MaxValue == m_MinValue) { m_iDTTickIntervalMult = 0; m_TickIncrement = 0; return; } int PixelSpace; if (m_bIsHorizontal) { if (m_AxisType == atDateTime) PixelSpace = 60; else PixelSpace = 30; } else PixelSpace = 20; int MaxTickNumber = (int)fabs((m_EndPos-m_StartPos)/PixelSpace * 1.0); //Calculate the appropriate TickSpace (1 tick every 30 pixel +/-) switch (m_AxisType) { case atLogarithmic: m_TickIncrement = 10; break; case atStandard: { //Temporary tick increment double TickIncrement = (m_MaxValue-m_MinValue)/MaxTickNumber; // Calculate appropriate tickSpace (not rounded on 'strange values' but // on something like 1, 2 or 5*10^X where X is optimalized for showing the most // significant digits) int Zeros = (int)floor(log10(TickIncrement)); double MinTickIncrement = pow(10.0,Zeros); int Digits = 0; if (Zeros<0) { //We must set decimal places. In the other cases, Digits will be 0. Digits = (int)fabs(Zeros*1.0); } if (MinTickIncrement>=TickIncrement) { m_TickIncrement = MinTickIncrement; SetDecimals(Digits); } else if (MinTickIncrement*2>=TickIncrement) { m_TickIncrement = MinTickIncrement*2; SetDecimals(Digits); } else if (MinTickIncrement*5>=TickIncrement) { m_TickIncrement = MinTickIncrement*5; SetDecimals(Digits); } else if (MinTickIncrement*10>=TickIncrement) { m_TickIncrement = MinTickIncrement*10; if (Digits) SetDecimals(Digits-1); else SetDecimals(Digits); } } break; case atDateTime: { COleDateTime StartDate(m_MinValue); COleDateTime EndDate(m_MaxValue); COleDateTimeSpan minTickInterval = (EndDate - StartDate)/MaxTickNumber; double Seconds = minTickInterval.GetTotalSeconds(); double Minutes = minTickInterval.GetTotalMinutes(); double Hours = minTickInterval.GetTotalHours(); double Days = minTickInterval.GetTotalDays(); if (Seconds < 60) { m_BaseInterval = tiSecond; if (Seconds > 30) { m_BaseInterval = tiMinute; m_iDTTickIntervalMult = 1; } else if (Seconds > 10) m_iDTTickIntervalMult = 30; else if (Seconds > 5) m_iDTTickIntervalMult = 10; else if (Seconds > 2) m_iDTTickIntervalMult = 5; else m_iDTTickIntervalMult = 1; } else if (Minutes < 60) { m_BaseInterval = tiMinute; if (Minutes > 30) { m_BaseInterval = tiHour; m_iDTTickIntervalMult = 1; } else if (Minutes > 10) m_iDTTickIntervalMult = 30; else if (Minutes > 5) m_iDTTickIntervalMult = 10; else if (Minutes > 2) m_iDTTickIntervalMult = 5; else m_iDTTickIntervalMult = 2; } else if (Hours < 24) { m_BaseInterval = tiHour; if (Hours > 12) { m_BaseInterval = tiDay; m_iDTTickIntervalMult = 1; } else if (Hours > 6) m_iDTTickIntervalMult = 12; else if (Hours > 2) m_iDTTickIntervalMult = 6; else m_iDTTickIntervalMult = 2; } else if (Days < 31) { m_BaseInterval = tiDay; if (Days > 7) { m_BaseInterval = tiMonth; m_iDTTickIntervalMult = 1; } else if (Days > 2) { m_BaseInterval = tiDay; m_iDTTickIntervalMult = 7; } else m_iDTTickIntervalMult = 2; } else if (Days < 365) { m_BaseInterval = tiMonth; if (Days > 186) // Approx 6 months { m_BaseInterval = tiYear; m_iDTTickIntervalMult = 1; } else if (Days > 124) m_iDTTickIntervalMult = 6; else if (Days > 62) m_iDTTickIntervalMult = 4; else m_iDTTickIntervalMult = 2; } else { m_BaseInterval = tiYear; m_iDTTickIntervalMult = (int)Days/365 + 1; } if (m_bAutoTickFormat) RefreshDTTickFormat(); } break; } }
double CChartDateTimeAxis::GetTickBeforeVal(double dValue) const { double precision = 0.0000000001; if (dValue < 0) precision = -0.0000000001; COleDateTime tickBefore; COleDateTime valueTime = COleDateTime(DATE(dValue+precision)); COleDateTimeSpan dtSpan = valueTime - m_ReferenceTick; switch (m_BaseInterval) { case tiSecond: { int totalSecs = (int)dtSpan.GetTotalSeconds(); totalSecs = (totalSecs/m_iDTTickIntervalMult) * m_iDTTickIntervalMult; int Days = totalSecs/86400; // 86400 seconds in one day int Hours = (totalSecs%86400)/3600; // 3600 seconds in one hour int Minutes = ((totalSecs%86400)%3600)/60; // 60 seconds in one minute int Seconds = ((totalSecs%86400)%3600)%60; dtSpan.SetDateTimeSpan(Days, Hours, Minutes, Seconds); tickBefore = m_ReferenceTick + dtSpan; } break; case tiMinute: { int totalMinutes = (int)dtSpan.GetTotalMinutes(); totalMinutes = (totalMinutes/m_iDTTickIntervalMult) * m_iDTTickIntervalMult; int Days = totalMinutes/1440; // 1440 minutes in one day int Hours = (totalMinutes%1440)/60; // 60 minutes in one hour int Minutes = (totalMinutes%1440)%60; dtSpan.SetDateTimeSpan(Days, Hours, Minutes, 0); tickBefore = m_ReferenceTick + dtSpan; } break; case tiHour: { int totalHours = (int)dtSpan.GetTotalHours(); totalHours = (totalHours/m_iDTTickIntervalMult) * m_iDTTickIntervalMult; int Days = totalHours/24; // 24 hours in one day int Hours = totalHours%24; dtSpan.SetDateTimeSpan(Days, Hours, 0, 0); tickBefore = m_ReferenceTick + dtSpan; } break; case tiDay: { int totalDays = (int)dtSpan.GetTotalDays(); totalDays = (totalDays/m_iDTTickIntervalMult) * m_iDTTickIntervalMult; dtSpan.SetDateTimeSpan(totalDays, 0, 0, 0); tickBefore = m_ReferenceTick + dtSpan; } break; case tiMonth: { int yearDiff = valueTime.GetYear() - m_ReferenceTick.GetYear(); int monthDiff = valueTime.GetMonth() - m_ReferenceTick.GetMonth(); int totalMonths = ((yearDiff*12+monthDiff)/m_iDTTickIntervalMult) * m_iDTTickIntervalMult; tickBefore = AddMonthToDate(m_ReferenceTick,totalMonths); } break; case tiYear: { int yearDiff = valueTime.GetYear() - m_ReferenceTick.GetYear(); int year = ((yearDiff)/m_iDTTickIntervalMult) * m_iDTTickIntervalMult; tickBefore = AddMonthToDate(m_ReferenceTick,year*12); } break; } return (DATE)tickBefore; }
void CChartDateTimeAxis::RefreshTickIncrement() { if (!m_bAutoTicks) return; if (m_MaxValue == m_MinValue) { m_iDTTickIntervalMult = 1; return; } int PixelSpace; if (m_bIsHorizontal) PixelSpace = 60; else PixelSpace = 20; int MaxTickNumber = (int)fabs((m_EndPos-m_StartPos)/PixelSpace * 1.0); if (MaxTickNumber == 0) MaxTickNumber = 1; COleDateTime StartDate(m_MinValue); COleDateTime EndDate(m_MaxValue); COleDateTimeSpan minTickInterval = (EndDate - StartDate)/MaxTickNumber; double Seconds = minTickInterval.GetTotalSeconds(); double Minutes = minTickInterval.GetTotalMinutes(); double Hours = minTickInterval.GetTotalHours(); double Days = minTickInterval.GetTotalDays(); if (Seconds < 60) { m_BaseInterval = tiSecond; if (Seconds > 30) { m_BaseInterval = tiMinute; m_iDTTickIntervalMult = 1; } else if (Seconds > 10) m_iDTTickIntervalMult = 30; else if (Seconds > 5) m_iDTTickIntervalMult = 10; else if (Seconds > 2) m_iDTTickIntervalMult = 5; else m_iDTTickIntervalMult = 1; } else if (Minutes < 60) { m_BaseInterval = tiMinute; if (Minutes > 30) { m_BaseInterval = tiHour; m_iDTTickIntervalMult = 1; } else if (Minutes > 10) m_iDTTickIntervalMult = 30; else if (Minutes > 5) m_iDTTickIntervalMult = 10; else if (Minutes > 2) m_iDTTickIntervalMult = 5; else m_iDTTickIntervalMult = 2; } else if (Hours < 24) { m_BaseInterval = tiHour; if (Hours > 12) { m_BaseInterval = tiDay; m_iDTTickIntervalMult = 1; } else if (Hours > 6) m_iDTTickIntervalMult = 12; else if (Hours > 2) m_iDTTickIntervalMult = 6; else m_iDTTickIntervalMult = 2; } else if (Days < 31) { m_BaseInterval = tiDay; if (Days > 7) { m_BaseInterval = tiMonth; m_iDTTickIntervalMult = 1; } else if (Days > 2) { m_BaseInterval = tiDay; m_iDTTickIntervalMult = 7; } else m_iDTTickIntervalMult = 2; } else if (Days < 365) { m_BaseInterval = tiMonth; if (Days > 186) // Approx 6 months { m_BaseInterval = tiYear; m_iDTTickIntervalMult = 1; } else if (Days > 124) m_iDTTickIntervalMult = 6; else if (Days > 62) m_iDTTickIntervalMult = 4; else m_iDTTickIntervalMult = 2; } else { m_BaseInterval = tiYear; m_iDTTickIntervalMult = (int)Days/365 + 1; } }