ctimespan 获取毫秒_怎么样进行 CTime 时间大小比较!

处理时间偶尔会小小的纠结下,尤其是UTC和local的时差问题,下面直入主题:

1.UTC和local

FILETIME有2种时间标准UTC和local,在MFC界面程序获取的为local基准,后台数据库往往用UTC基准存储,两者的转化如下:

FILETIME ft_UTC,ft_local;

::LocalFileTimeToFileTime(&ft_local,&ft_UTC);

::FileTimeToLocalFileTime(&ft_UTC,&ft_local);

2.SYSTEMTIME和FILETIME

搞定了FILETIME,接下去就是与SYSTEMTIME如何相互转化:

FILETIME ft_tm;

SYSTEMTIME sys_tm;

::FileTimeToSystemTime(&ft_tm,&sys_tm);

::SystemTimeToFileTime(&sys_tm,&ft_tm);

3.CTime和SYSTEMTIME、FILETIME

想要将CTime转化为FILETIME,则必须通过中间桥梁SYSTEMTIME来过渡

FILETIME ft_tm;

CTime tNow(2010,8,12,10,10,00);

tNow.GetAsSystemTime(sys_tm);

::SystemTimeToFileTime(&sys_tm,&ft_tm); ->得到想要的FILETIME

::FileTimeToSystemTime(&ft_tm,&sys_tm);

tNow = CTime(sys_tm);    ->得到想要的CTime

4.CFileTime、CFileTimeSpan、CTime、CTimeSpan

我们看下CFileTime的声明就明白了:

class CFileTime :public FILETIME

CFileTime结构内存与FILETIME相等,所以可以直接强制转化无需担心内存越界。

CFileTime是对FILETIME的外层封装,加了一些操作符=、+、-、+=、-=、<=、>=、!=...

CFileTimeSpan我想白痴都知道怎么用,唯一要明确的就是数量积:

static const ULONGLONG Millisecond = 10000;

static const ULONGLONG Second = Millisecond * 1000;

static const ULONGLONG Minute = Second * 60;

static const ULONGLONG Hour = Minute * 60;

static const ULONGLONG Day = Hour * 24;

static const ULONGLONG Week = Day * 7;

明白了吧?CFileTimeSpan的数量积是0.1纳秒,CTimeSpan的数量积是秒,

CFileTimeSpan = CTimeSpan*10000000

这样就方便我们直接操作FILETIME,而无需非得转成CTime处理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值