首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将天数与ColeDateTimeSpan相减为ColeDateTime

将天数与ColeDateTimeSpan相减为ColeDateTime
EN

Stack Overflow用户
提问于 2014-02-20 23:36:47
回答 1查看 1.2K关注 0票数 2

我必须为我的一个赋值更新一个旧的date类,并且我被这个函数卡住了,我必须重做。

如果操作可行,函数需要返回一个布尔值。

我想做的是将ColeDateTimeSpan的天数减去一个ColeDateTime

我知道我可以这样做:

代码语言:javascript
复制
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;

代码语言:javascript
复制
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,而不是崩溃

这就是我到目前为止所知道的:

代码语言:javascript
复制
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;
    }   
}

谢谢!

编辑:我的意思是减去....

EN

回答 1

Stack Overflow用户

发布于 2018-12-07 09:12:51

我知道这对你的任务来说太晚了,然而,其他人可能会发现它很有用。

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21912439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档