已知两天时间间隔,如何利用CTimeSpan得到当前时间?

lizhigang34 2009-08-02 10:56:38
假设起始时间是CTime tmStart = 1970-1-1 0:0:0
从tmStart到今年某个时刻的时间间隔是1248761695秒,如何求得当前这个时间呢?下面是我的做法,可得出的时间一直有误差?
CTime tmNow; //当前时间
CTimeSpan tmSpan(0, 0, 0, 1248761695); //间隔的时间
tmNow = tmStart + tmSpan;
...全文
260 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lizhigang34 2009-08-08
  • 打赏
  • 举报
回复
谢谢,是自己大意,在其他地方出了问题
gg606 2009-08-02
  • 打赏
  • 举报
回复
那么应该没有误差呀!因为这个完全是用的整数运算。
你所说的误差为多少?又是怎么判断的呢?
lizhigang34 2009-08-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gg606 的回复:]
CTime tmStart = 1970-1-1 0:0:0
这个你怎么构造?把时间设置成格林威治时间?如果用北京时间你只能构造成8点,
CTime tmStart(1970,1,1,8,0,0);

其实这个根本不用算(前提是格林威治时间)
CTime tmNow(1248761695);
[/Quote]
只是个比方,构造的时候就是你说的,构造成8点,最后我又减去了这8个小时。
CTime tmStart(1970,1,1,8,0,0);
CTimeSpan tmSpan(1248761695);
CTime tmNow = tmStart + tmSpan - CTimeSpan(0,8,0,0); //由于多加8小时,此处减去8小时
gg606 2009-08-02
  • 打赏
  • 举报
回复
CTime tmStart = 1970-1-1 0:0:0
这个你怎么构造?把时间设置成格林威治时间?如果用北京时间你只能构造成8点,
CTime tmStart(1970,1,1,8,0,0);

其实这个根本不用算(前提是格林威治时间)
CTime tmNow(1248761695);
zhoujianhei 2009-08-02
  • 打赏
  • 举报
回复
http://blog.csdn.net/reallyioio/archive/2008/08/20/2803101.aspx

CTime tmNow(tmStart.GetTime()+ 1248761695);

hutu_cn 2009-08-02
  • 打赏
  • 举报
回复
CTime tmNow;
CTimeSpan tmSpan(1248761695);
tmNow = tmStart + tmSpan;
gg606 2009-08-02
  • 打赏
  • 举报
回复
对,用COleDateTime,无须转换
deng335995 2009-08-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hutu_cn 的回复:]
CTime tmNow;
CTimeSpan tmSpan(1248761695);
tmNow = tmStart + tmSpan;
[/Quote]

同意,应该不会有问题的
zyq5945 2009-08-02
  • 打赏
  • 举报
回复
        COleDateTime tm(1970, 1, 1, 0, 0, 0);

COleDateTimeSpan tmp;
tmp.m_span = 1248761695 /3600;

tm = tmp +tm;
zyq5945 2009-08-02
  • 打赏
  • 举报
回复
		COleDateTime tm(1970, 1, 1, 0, 0, 0);

COleDateTimeSpan tmp;
tmp.m_span = 3600 /3600;

tm = tmp +tm;


gg606 2009-08-02
  • 打赏
  • 举报
回复
CTime和CTimeSpan 用的是整数运算,在秒一级应该没有误差,如果出现舍入误差,估计是出在其他环节了。
lizhigang34 2009-08-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 gg606 的回复:]
那么应该没有误差呀!因为这个完全是用的整数运算。
你所说的误差为多少?又是怎么判断的呢?
[/Quote]
因为现在做的这个东西期间要传时间值,要把标准时间转换成lotus时间(是以1899年12月30号0:0:0开始计算的)。所以,在转换的时候先把这个lotus时间转到格林威治时间,再从格林威治时间转到标准时间。可以是期间在运算时出现了四舍五入吧,反正和原来的时间相差几分钟

16,548

社区成员

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

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

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