Вычтите дни с ColeDateTimeSpan к ColeDateTime

Я должен обновить старый класс дат для одного из моих назначений, и я застрял в этой функции, я должен повторить.

Функция должна возвращать Bool, если операция возможна.

Что я хочу сделать, это вычесть дни с ColeDateTimeSpan в ColeDateTime

Я знаю, что могу сделать что-то вроде этого:

int i = 2;
COleDateTime time_DT = COleDateTime(2014, 2, 20, 0, 0, 0);
COleDateTimeSpan time_SP = COleDateTimeSpan(i);
time_DT = time_DT - time_SP;
cout << time_DT.GetDay() << endl;

В этом случае моя функция вернет true;

long i = 999999999999;
COleDateTime time_DT = COleDateTime(2014, 2, 20, 0, 0, 0);
COleDateTimeSpan time_SP = COleDateTimeSpan(i);
time_DT = time_DT - time_SP;
cout << time_DT.GetDay() << endl;

В этом случае моя функция будет возвращать false вместо сбоя

Это то, что я до сих пор:

bool Date::addDays(long days)
{
bool bRet = true;
COleDateTimeSpan ts(m_time); //m_time being my COleDateTime
COleDateTimeSpan tl(days);

if (tl > ts)
{
bRet = false;
return bRet;
}
else
{
return bRet;
}
}

Спасибо!

РЕДАКТИРОВАТЬ: Я имел в виду вычитать ….

2

Решение

Я знаю, что уже слишком поздно для вашего задания, однако, другие могут найти это полезным.

bool Date::AddDays(long days)
{
// Copy the original value to temporary variable so that it is not lost when subtraction results
// in invalid time.
COleDateTime dtTime(m_time);

// Check the time for validity before performing subtraction.
if(dtTime.GetStatus() != COleDateTime::valid )
return false;

// Check the input for valid value range. Must be positive value.
if(days < 0)
return false;

// Use that constructor of 'COleDateTimeSpan' which takes days as input.
COleDateTimeSpan tsDays(days, 0,0,0);   // (Days, Hours, Min, Sec).

// Perform the subtraction.
dtTime = dtTime - tsDays;

// Check if the subtraction has resulted into valid time.
if(dtTime.GetStatus() != COleDateTime::valid )
return false;

// Copy the result from temporary variable to class member.
m_time = dtTime;

return true;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector