首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 急 !!!如何获取一定毫秒数后的时间 [已结贴,结贴人:zh2208]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zh2208
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-21 09:53:16 楼主
    比如现在有个时间格式:2008/08/21 09:50:50.555000
    现在想求 2222222毫秒 后的时间。。
    取得的格式还是上面的格式。。
    不通过 1.除以1000取得秒。。再除以60取得分。。。
    vc++中是否有函数直接求得。。。
    高手快点现身吧。。。。。。。。
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Mackz
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 4

      6

      7

    发表于:2008-08-21 10:10:231楼 得分:10
    可以用SystemTimeToFileTime转换后来修改,然后用FileTimeToSystemTime转换回来。可以用__int64代替FILETIME进行计算,注意FILETIME表示的单位是100纳秒,转换为毫秒是10000倍。
    另外你小数点后面6位数是什么意思?毫秒的话只有3位数字吧。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • orbit
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 10:18:272楼 得分:2
    首先将2008/08/21 09:50:50.555000 转换成一个SYSTEM——TIME结构,然后换算成相对于1900年1月1日0点的毫秒数,然后加上22222222,然后再换算成SYSTEM——TIME结构,再格式化成字符串
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yyunffu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 10:18:593楼 得分:2
    用以下代码将字符串转换为COleDateTime 对象,之后用COleDateTime::GetYear()...  等,获取各部分时间值,按楼主逻辑处理即可。
    C/C++ code
    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; } }

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zh2208
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 10:19:304楼 得分:0
    请问下SystemTimeToFileTime()里面的参数该怎么定义。。。
    就是说 我的时间保存在 char tm[30] 中;毫秒保存在 int m;
    我该怎么操作这两个函数。。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yyunffu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 10:22:595楼 得分:0
    不好意思啊,COleDateTime 这个好像只能到秒级。
    支持 1楼 2楼。
    google 一把应该有结果。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • walkbywind
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 10:25:176楼 得分:6
    引用 1 楼 Mackz 的回复:
    毫秒的话只有3位数字吧。

    //------------------------------------
    union {
    FILETIME ft;
    ULONGLONG ut;
    } t;

    SYSTEMTIME st;
    GetLocalTime(&st);

    SystemTimeToFileTime(&st, &t.ft);
    t.ut += UInt32x32To64(毫秒, 10000);
    FileTimeToSystemTime(&t.ft, &st);
    //------------------------------------
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • maomaoxiong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 10:39:177楼 得分:0
    利用SYSTEMTIME进行转换吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zh2208
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 10:46:248楼 得分:0
    我该如何把保存在 char tm[30] 中的时间格式转化掉??
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • walkbywind
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 11:04:259楼 得分:0
    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);
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Mackz
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 4

      6

      7

    发表于:2008-08-21 11:08:1110楼 得分:0
    C/C++ code
    TCHAR szTime[] = _T("2008/08/21 09:50:50.555"); SYSTEMTIME time1; int nRet = _stscanf_s(szTime, _T("%04hu/%02hu/%02hu %02hu:%02hu:%02hu.%03hu"), &time1.wYear, &time1.wMonth, &time1.wDay, &time1.wHour, &time1.wMinute, &time1.wSecond, &time1.wMilliseconds); __int64 nTime; SystemTimeToFileTime(&time1, (LPFILETIME)&nTime); nTime /= 10000; // 将100纳秒单位转换为毫秒单位 __int64 nAddMilliSecond = 2222222; nTime += nAddMilliSecond; nTime *= 10000; // 将毫秒转换为以100纳秒为单位 SYSTEMTIME time2; FileTimeToSystemTime((LPFILETIME)&nTime, &time2); CString strTime; strTime.Format(_T("Time1:%04d/%02d/%02d %02d:%02d:%02d.%03d\r\nTime2:%04d/%02d/%02d %02d:%02d:%02d.%03d"), time1.wYear, time1.wMonth, time1.wDay, time1.wHour, time1.wMinute, time1.wSecond, time1.wMilliseconds, time2.wYear, time2.wMonth, time2.wDay, time2.wHour, time2.wMinute, time2.wSecond, time2.wMilliseconds); AfxMessageBox(strTime);
    该回复于2008-08-21 11:12:12被版主修改
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • tab0tab
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 11:09:4811楼 得分:0
    CTimeSpan
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zh2208
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 16:37:4312楼 得分:0
    在vc2003下。。_stscanf_s编译不了。。。
    CTimeSpan这个方法会显示参数,但是也编译不了。。
    为什么???
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Mackz
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 4

      6

      7

    发表于:2008-08-22 01:17:3813楼 得分:0
    VS 2003下去掉_s后缀就可以了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • shanying_0
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 08:43:4414楼 得分:0
    学习了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zh2208
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 16:23:3315楼 得分:0
    分不多。老大们笑纳。。。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved