VC笔记之时间

 
获得当前日期和时间
 
CTime tm=CTime::GetCurrentTime();
 CString str=tm.Format("%Y-%m-%d");
 
在VC中,我们可以借助CTime时间类,获取系统当前日期,具体使用方法如下:
 
CTime t = CTime::GetCurrentTime(); //获取系统日期
 
int d=t.GetDay(); //获得几号
 
int y=t.GetYear(); //获取年份
 
int m=t.GetMonth(); //获取当前月份
 
int h=t.GetHour(); //获取当前为几时
 
int mm=t.GetMinute(); //获取分钟
 
int s=t.GetSecond(); //获取秒
 
int w=t.GetDayOfWeek(); //获取星期几,注意1为星期天,7为星期六
 
如果想计算两段时间的差值,可以使用 CTimeSpan 类,具体使用方法如下:
 
CTime t1( 1999, 3, 19, 22, 15, 0 );
 
CTime t = CTime::GetCurrentTime();
 
CTimeSpan span=t-t1; // 计算当前系统时间与时间t1 的间隔
 
int iDay=span.GetDays(); // 获取这段时间间隔共有多少天
 
int iHour=span.GetTotalHours(); // 获取总共有多少小时
 
int iMin=span.GetTotalMinutes();// 获取总共有多少分钟
 
int iSec=span.GetTotalSeconds();// 获取总共有多少秒
 
 
设置计时器  
 
定义TIMER ID
 
#define TIMERID_JISUANFANGSHI 2
 
在适当的地方设置时钟,需要开始其作用的地方;
 
SetTimer(TIMERID_JISUANFANGSHI,200,NULL);
 
在不需要的时候销毁掉时钟
 
 KillTimer(TIMERID_JISUANFANGSHI);
 
消息映射
 
void CJisuan::OnTimer(UINT nIDEvent)
{
   //定时处理的问题信息
}
 
 
 
CString 转换成 COleDateTime
strCString="2003-10-27 6:24:37"; //
COleVariant vtime(strCString);
vtime.ChangeType(VT_DATE);
COleDateTime time4=vtime;
 
 
 
COleDataTime 转换成 CTime
COleDateTime time1(1977,4,16,2,2,2); // SYSTEMTIME systime;
VariantTimeToSystemTime(time1, &systime);
CTime tm(systime);
 
 
 
 
time_t time2=tm.GetTime(); //CTime--->time_t
COleDateTime time3(time2); //time_t--->COleDateTime
 
 
 
COleDateTime double
COleDateTime    Time(2000,3,17,14,0,0);  
 double    a=(double)Time;  
 return;   
 
 
直接转换就是了   
          COleDateTime   dt;  
          ...  
          double   x=(double)dt.m_dt;  
   
 
 The   DATE   type   is   implemented   using   an   8-byte   floating-point   number.   Days   are   represented   by   whole   number   increments   starting   with   30   December   1899,   midnight   as   time   zero.   Hour   values   are   expressed   as   the   absolute   value   of   the   fractional   part   of   the   number.
 
       int year = tmm.GetYear();
       int month = tmm.GetMonth();
       int day = tmm.GetDay();
       int hour = tmm.GetHour();
       int minute=tmm.GetMinute();
       int second = tmm.GetSecond();
 
       CString m_lGetProDay;
       m_lGetProDay.Format("%04u-%02u-%02u %02u:%02u:%02u/n",year,month,day,hour,minute,second);
       COleVariant vsettime(m_lGetProDay);
       vsettime.ChangeType(VT_DATE);
       COleDateTime dtime=vsettime;
       return dtime;
 
 
日期相隔计算和判断
// m_tBeginDate1, m_tBeginDate2 COleDataTime
// 一个为起始时间,一个为终止时间
//COleDataTime--->CTime
 
SYSTEMTIME systime;
    VariantTimeToSystemTime(m_tBeginDate1, &systime);
    CTime tm(systime);
 
     SYSTEMTIME systime2;
        VariantTimeToSystemTime(m_tBeginDate2,&systime2);
        CTime tm1(systime2);
 
       if(tm > tm1)  
       {
              MessageBox("起始时间不能大于终止时间!","提示",MB_OK);
              return;
       }
//***********************************************************
// CTimeSpan的用法
/* MSDN介绍如下
CTimeSpan Operators
Operators
operator =
Assigns new time-span values.
operator +
Adds CTimeSpan objects.
operator –
Subtracts CTimeSpan objects.
operator +=
Adds a CTimeSpan object to this CTimeSpan.
operator –=
Subtracts a CTimeSpan object from this CTimeSpan.
operator == < etc.
Compares two relative time values.
 
Archive/Dump
operator <<
Outputs a CTimeSpan object to CArchive or CDumpContext.
operator >>
Inputs a CTimeSpan object from CArchive
 
CTimeSpan Member Functions
Construction
CTimeSpan
Constructs CTimeSpan objects in various ways.
 
Extraction
GetDays
Returns the number of complete days in this CTimeSpan.
GetHours
Returns the number of hours in the current day (–23 through 23).
GetTotalHours
Returns the total number of complete hours in this CTimeSpan.
GetMinutes
Returns the number of minutes in the current hour (–59 through 59).
GetTotalMinutes
Returns the total number of complete minutes in this CTimeSpan.
GetSeconds
Returns the number of seconds in the current minute (–59 through 59).
GetTotalSeconds
Returns the total number of complete seconds in this CTimeSpan.
 
Conversion
Format
Converts a CTimeSpan into a formatted string.
时间的间隔处理
*/
       CTimeSpan m_timespan = tm1 - tm;
    //int iss=m_timespan.GetDays();
       if(m_timespan.GetDays() >30)
   {
        MessageBox("查询日期不能大于1个月","提示",MB_OK);
        return;
   }
 

你可能感兴趣的:(学术讨论,研究,测控自动控制技术)