VC++ CTime COleDateTime的常用操作和比较

使用COleDateTime类
1) 获取当前时间。
      CTime time;
      time = CTime::GetCurrentTime();
2) 获取时间元素。
      int year = time.GetYear() ;
      int month = time.GetMonth();
      int day = time.GetDay();
      int hour = time.GetHour();
      int minute = time.GetMinute();
      int second = time.GetSecond();
      int DayOfWeek = time.GetDayOfWeek() ;
3) 获取时间间隔。
      CTimeSpan timespan(0,0,1,0); // days,hours,minutes,seconds
      timespan = CTime::GetCurrentTime() - time;
4) 把时间转换为字符串。
      CString sDate,sTime,sElapsed Time ;
      sDate = time.Format("%m/%d/%y"); //ex: 12/10/98
      sTime = time.Format("%H:%M:%S"); //ex: 9:12:02
      sElapsed Time = timespan.Format("%D:%H:%M:%S"); // %D is total elapsed days
5) 把字符串转换为时间。
         CString sDateTime;
         int nYear, nMonth, nDate, nHour, nMin, nSec;
         sscanf(sDateTime, "%d-%d-%d %d:%d:%d", &nYear, &nMonth, &nDate, &nHour, &nMin, &nSec);
         CTime sTime(nYear, nMonth, nDate, nHour, nMin, nSec);  
要想知道更多的时间格式,参见MFC文档中的strftime

使用COleDateTime类
1) 获得一年中的某一天。
      COleDateTime datetime;
      datetime = COleDateTime::GetCurrentTime();
      int DayOfYear = datetime.GetDayOfYear();
2) 从文本串中读取时间。
      COleDateTime datetime;
      datetime.ParseDateTime("12:12:23 27 January 93");
3) 获取时间间隔。
         //比方计算日期差
         COleDateTime begin_date(1970, 1, 1, 0, 0, 0);
         COleDateTime end_date(1990, 1, 1, 0, 0, 0);
         COleDateTimeSpan timeSpan;    //计算时间差
         timeSpan = end_date - begin_date;  
         long expi_date = timeSpan.GetDays();  

说明
■ CTime和COleDateTime具有几乎同样的功能。然而,COleDateTime允许用户获得一年中的某一天(创建Julian日期的一种好方法),以及分析一个时间文本串。
■ 与CTime相比, COleDateTime的优点在于它支持DWORD变量。COleDateTime使用的位数是双浮点的两倍,既然CTime只是简单地计算从1970 年1月1日之后经过的秒数,所以到了2037年它将达到4294967295,从而不能再使用。相反,COleDateTime是一个
浮点数,它表示是从1900年12月30号之后的天数(小时是天的小数部分),几千年之内不会溢出。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
time_t是C/C++语言标准库中的时间类型,表示从格林威治时间1970年1月1日00:00:00到当前时间的秒数。CTime、SYSTEMTIME、COleDateTime、COleVariant是MFC中的时间类型,用于便捷地进行日期和时间的操作。 下面是它们之间的互相转换代码及讲解: 1. time_t to CTime ```cpp time_t t = time(NULL); CTime time(t); ``` 这段代码将当前时间的time_t类型转换为CTime类型。CTime类型的构造函数可以接受time_t类型的参数,将其转换为CTime类型。 2. CTime to time_t ```cpp CTime time(2021, 10, 1, 0, 0, 0); time_t t = time.GetTime(); ``` 这段代码将指定时间的CTime类型转换为time_t类型。CTime类型的GetTime函数返回从格林威治时间1970年1月1日00:00:00到当前时间的秒数,即time_t类型。 3. SYSTEMTIME to CTime ```cpp SYSTEMTIME st; GetLocalTime(&st); CTime time(st); ``` 这段代码将当前时间的SYSTEMTIME类型转换为CTime类型。CTime类型的构造函数可以接受SYSTEMTIME类型的参数,将其转换为CTime类型。 4. CTime to SYSTEMTIME ```cpp CTime time(2021, 10, 1, 0, 0, 0); SYSTEMTIME st; time.GetAsSystemTime(st); ``` 这段代码将指定时间的CTime类型转换为SYSTEMTIME类型。CTime类型的GetAsSystemTime函数将CTime类型转换为SYSTEMTIME类型。 5. COleDateTime to CTime ```cpp COleDateTime dt; dt = COleDateTime::GetCurrentTime(); CTime time(dt.GetYear(), dt.GetMonth(), dt.GetDay(), dt.GetHour(), dt.GetMinute(), dt.GetSecond()); ``` 这段代码将当前时间的COleDateTime类型转换为CTime类型。COleDateTime类型的GetCurrentTime函数返回当前时间的COleDateTime类型,CTime类型的构造函数可以接受COleDateTime类型的参数,将其转换为CTime类型。 6. CTime to COleDateTime ```cpp CTime time(2021, 10, 1, 0, 0, 0); COleDateTime dt(time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond()); ``` 这段代码将指定时间的CTime类型转换为COleDateTime类型。COleDateTime类型的构造函数可以接受CTime类型的参数,将其转换为COleDateTime类型。 7. COleVariant to CTime ```cpp COleVariant var; var = COleDateTime::GetCurrentTime(); CTime time(var.date); ``` 这段代码将当前时间的COleVariant类型转换为CTime类型。COleVariant类型的构造函数可以接受COleDateTime类型的参数,将其转换为COleVariant类型,CTime类型的构造函数可以接受DATE类型的参数,将其转换为CTime类型。 8. CTime to COleVariant ```cpp CTime time(2021, 10, 1, 0, 0, 0); COleVariant var(time); ``` 这段代码将指定时间的CTime类型转换为COleVariant类型。COleVariant类型的构造函数可以接受CTime类型的参数,将其转换为COleVariant类型。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值