如何获取系统时间并计算??

ATMCash4423 2011-05-16 05:34:08

UpdateData();
SYSTEMTIME sysTime;
GetLocalTime(&sysTime);
m_ybtime.Format("%d:%d:%d",sysTime.wHour,sysTime.wMinute,sysTime.wSecond+120);
UpdateData(false);

我获取了系统时间之后用sysTime.wSecond+120,我想试试能不能变成2分钟,结果我悲剧了……
显示17:34:146……
我该如何让时间参与计算??
...全文
114 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
kyotrue 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 atmcash4423 的回复:]
C/C++ code

ftTime.QuadPart = ftTime.QuadPart-240*10000000;


加到180没问题,加到240提示我溢出啊……
[/Quote]

额,溢出的240*10000000,编译器默认是当作32位整数处理的,(INT64)240*10000000就没问题了
不二星空 2011-05-18
  • 打赏
  • 举报
回复
当前时间都有了,自己想怎么弄还不容易?
不二星空 2011-05-18
  • 打赏
  • 举报
回复
没懂楼主的目的。。
kyotrue 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 atmcash4423 的回复:]
C/C++ code

ftTime.QuadPart = ftTime.QuadPart-240*10000000;


加到180没问题,加到240提示我溢出啊……
[/Quote]

LARGE_INTEGER是64位整数,你就是往后加1000年也不会溢出啊,你确定你ftTime是从当前时间转换过去的?
liuzheng85711 2011-05-18
  • 打赏
  • 举报
回复
GetSystemTime
ATMCash4423 2011-05-18
  • 打赏
  • 举报
回复

ftTime.QuadPart = ftTime.QuadPart-240*10000000;

加到180没问题,加到240提示我溢出啊……
kyotrue 2011-05-17
  • 打赏
  • 举报
回复
做计算的话,用FILETIME,转换函数SystemTimeToFileTime、FileTimeToSystemTime,为了方便计算,可以用LARGE_INTEGER代替FILETIME结构。
FILETIME的单位是100纳秒,换算成秒大概是10000000。
LARGE_INTEGER ftTime;
::SystemTimeToFileTime(&sysTime, (LPFILETIME)&ftTime);
ftTime.QuadPart += 120 * 10000000;
::FileTimeToSystemTime((LPFILETIME)&ftTime, &sysTime);
孤客天涯 2011-05-16
  • 打赏
  • 举报
回复
COleDateTimeSpan
sichuanwww 2011-05-16
  • 打赏
  • 举报
回复
MSDN中搜索CTimeSpan
youcry 2011-05-16
  • 打赏
  • 举报
回复
int Hours, Hour, Minutes, Minute, Seconds, Second;

CTime currenttime;

Hours = long(currenttime.GetHour())/10; //获取小时
Hour = long(currenttime.GetHour())%10;
Minutes = long(currenttime.GetMinute())/10; //获取分钟
Minute = long(currenttime.GetMinute())%10;
Seconds = long(currenttime.GetSecond())/10; //获取秒速
Second = long(currenttime.GetSecond())%10;

CString showtime = NULL;
showtime.Format("时间:%d%d:%d%d:%d%d\n",Hours,Hour,Minutes,Minute,Seconds,Second);//格式化时间

试试看这样的!
vcf_reader 2011-05-16
  • 打赏
  • 举报
回复
必须自己做进位(60进制)
fish_phenix 2011-05-16
  • 打赏
  • 举报
回复
不要用SYSTEMTIME

用CTime 配合CTimeSpan

CTimeSpan span(120); //单位忘了

CTime time = CTime::GetCurrentTime();
time += span;

m_ybtime.Format("%d:%d:%d",time.GetHour(),time.GetMinute,time.GetSecond());
酒红色的泪 2011-05-16
  • 打赏
  • 举报
回复
MSDN中搜索CTimeSpan
疯狂-的-蜗牛 2011-05-16
  • 打赏
  • 举报
回复
我获取了系统时间之后用sysTime.wSecond+120,我想试试能不能变成2分钟,结果我悲剧了……
显示17:34:146……
这是当然的了
如何让时间参与计算??用if语句判断,然后做出相应的改变输出吧、

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧