比如现在有个时间格式:2008/08/21 09:50:50.555000
现在想求 2222222毫秒 后的时间。。
取得的格式还是上面的格式。。
不通过 1.除以1000取得秒。。再除以60取得分
vc++中是否有函数直接求得
高手快点现身吧。。

解决方案 »

  1.   

    可以用SystemTimeToFileTime转换后来修改,然后用FileTimeToSystemTime转换回来。可以用__int64代替FILETIME进行计算,注意FILETIME表示的单位是100纳秒,转换为毫秒是10000倍。
    另外你小数点后面6位数是什么意思?毫秒的话只有3位数字吧。
      

  2.   

    首先将2008/08/21 09:50:50.555000 转换成一个SYSTEM——TIME结构,然后换算成相对于1900年1月1日0点的毫秒数,然后加上22222222,然后再换算成SYSTEM——TIME结构,再格式化成字符串
      

  3.   

    用以下代码将字符串转换为COleDateTime 对象,之后用COleDateTime::GetYear()...  等,获取各部分时间值,按楼主逻辑处理即可。
    COleDateTime CGetData::GetOleDateTimeFromString(CString strDateTime)//转换时间类型
    {
    CString strTmpDateTime = strDateTime;

    if (!strTmpDateTime.IsEmpty())
    {
    COleVariant varDateTime(strDateTime);
    varDateTime.ChangeType(VT_DATE);

    COleDateTime oleDateTime = varDateTime;

    return oleDateTime;
    }
    else
    {
    VARIANT varReturn;
    varReturn.vt = VT_NULL;
    return varReturn;
    }
    }
      

  4.   

    请问下SystemTimeToFileTime()里面的参数该怎么定义
    就是说 我的时间保存在 char tm[30] 中;毫秒保存在 int m;
    我该怎么操作这两个函数
      

  5.   

    不好意思啊,COleDateTime 这个好像只能到秒级。
    支持 1楼 2楼。
    google 一把应该有结果。
      

  6.   

    //------------------------------------
    union {
    FILETIME ft;
    ULONGLONG ut;
    } t;SYSTEMTIME st;
    GetLocalTime(&st);SystemTimeToFileTime(&st, &t.ft);
    t.ut += UInt32x32To64(毫秒, 10000);
    FileTimeToSystemTime(&t.ft, &st);
    //------------------------------------
      

  7.   

    我该如何把保存在 char tm[30] 中的时间格式转化掉??
      

  8.   

    union { 
    FILETIME ft; 
    ULONGLONG ut; 
    } t; SYSTEMTIME st; 
    GetLocalTime(&st); SystemTimeToFileTime(&st, &t.ft); 
    t.ut += UInt32x32To64(毫秒, 10000); 
    FileTimeToSystemTime(&t.ft, &st); CString myTime = _T("");
    myTime.Format("%d-%02d-%02d %02d:%02d:%02d", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);
      

  9.   

    本帖最后由 Mackz 于 2008-08-21 11:12:12 编辑
      

  10.   

    在vc2003下。。_stscanf_s编译不了
    CTimeSpan这个方法会显示参数,但是也编译不了。。
    为什么???
      

  11.   

    VS 2003下去掉_s后缀就可以了。