我现在存储了两个系统时间SYSTEMTIME time1;SYSTEMTIME time2; 如何求这两个时间之间的差值?
如果将这两个系统时间使用SystemTimeToVariantTime转换成DATE(VS2005的定义:typedef DATE double)后又该如何求这两个时间的差值?
最后结果用秒或者毫秒表示都行
10 个解决方案
我忘了说了,我是在VS2005下做COM组件开发,不是在C++Builder下
呃。。。
如果这样计算的话太麻烦了,这还涉及到年份,月份,时间差值算起来有点麻烦的,有没有更简单一点的呢?
时,分,秒分别相减,然后乘以相应的秒倍数,如小时乘以3600,分钟乘以60,然后再相加。
我现在就是按照妖哥的说的方法搞的,暂时顶一阵子,就是感觉不是很精确,万一时间要是跨月份,甚至不巧刚好还跨个年份了呢,这个就不能这么算了,所以现在想找个比较简单准确的计算方法。
用SystemTimeToVariantTime转换成double后两个相减,不知道能不能有什么办法换算成秒的?
可以参考一下VCL中DateUtils.pas单元中,SecondsBetween函数的实现。
SystemTimeToFileTime
It is not recommended that you add and subtract values from the FILETIME structure to obtain relative times. Instead, you should
Copy the resulting FILETIME structure to a ULARGE_INTEGER structure.
Use normal 64-bit arithmetic on the ULARGE_INTEGER value.
用QuadPart相减就可以了