CDateTimeCtrl CTime COleDateTime CString 日期时间

控件变量:CDateTimeCtrl m_BeginTime,CDateTimeCtrl  m_EndTime;


m_BeginTime.SetFormat("yyyy-MM-dd HH:mm:ss");

m_EndTime.SetFormat("yyyy-MM-dd HH:mm:ss");


//从CDateTimeCtrl、CTime、COleDateTime得到字符串时间

第一种:CDateTimeCtrl转CTime转CString

CTime ctBeginTime,ctEndTime;

m_BeginTime.GetTime(ctBeginTime);

strBeginTime = ctBeginTime.Format("%Y-%m-%d %H:%M:%S");

第二种:COleDateTime转CString

COleDateTime ole_begintime;

strBeginTime = ole_begintime.Format("%Y-%m-%d %H:%M:%S";



//得到时间差

CTimeSpan ts = ctEndTime - ctBeginTime;

int nTotalSec = ts.GetTotalSeconds();          //秒数


//得到当前时间

这里需要注意的是,GetLocalTime得到的是本地时区的时间,而GetSystemTime是得到UTC时间。

第一种:COleDateTime

COleDateTime ole_begintime = COleDateTime::GetCurrentTime();

第二种:SYSTEMTIME

SYSTEMTIME CurrentTime;

GetLocalTime(&CurrentTime);


//设置当前时间

第一种:m_BeginTime.SetTime(CurrentTime);

第二种:m_BeginTime.SetTime(ole_begintime);


//当前时间赋给CTime

CTime timeT(
                    (int)CurrentTime.wYear, (int)CurrentTime.wMonth, (int)CurrentTime.wDay,
                    (int)CurrentTime.wHour, (int)CurrentTime.wMinute, (int)CurrentTime.wSecond


//根据字符串时间,设置时间控件的时间:

仅一种:CString转COleDateTime转CDateTimeCtrl

CString strBeginTime,strEndTime;

COleDateTime ole_time;

ole_time.ParseDateTime(strBeginTime);

m_BeginTime.SetTime(ole_time);


//COleDateTime与CTime互相转化

COleDateTime->CTime

   SYSTEMTIME sys_time;
   ole_time.GetAsSystemtime(sys_time);
   c_time = CTime(sys_time);

CTime->COleDateTime

   SYSTEMTIME sys_time;
   c_time.GetAsSystemTime(sys_time);
   ole_time = COleDateTime(sys_time);


//在指定时间的基础上,加上或者减去一段时间后,得到新的日期时间
MFC:
    CTime ctBeginTime;

     COleDateTime ole_begintime;

     SYSTEMTIME sys_begintime;

     m_BeginTime.GetTime(ctBeginTime);

     ctBeginTime.GetAsSystemTime(sys_begintime);

     ole_begintime = COleDateTime(sys_begintime);


      COleDateTimeSpan span;

      span.SetDateTimeSpan(m_nDay,m_nHour,m_nMinute,m_nSecond);

      ole_begintime+=span;
    strEndTime = ole_begintime.Format("%Y-%m-%d %H:%M:%S";


//根据给定的日期,得到该日期的星期数,再得到该星期开始和结束的日期

COleDateTime t1, tWeekBegin, tWeekEnd;
t1.SetDate(2006,8,8);
//这里需要注意的是西方人的习惯和我们不一样,他们把星期天当作每个星期的第一天,如下面的函数GetDayOfWeek就是如此,所以我做了下面的一些转换
int nXingQi = t1.GetDayOfWeek();
COleDateTimeSpan tsWeekBegin, tsWeekEnd;
if ( 1 == nXingQi 
{
tsWeekBegin.SetDateTimeSpan(6, 0, 0, 0);
tsWeekEnd.SetDateTimeSpan(0, 0, 0, 0);
}
else
{
tsWeekBegin.SetDateTimeSpan(nXingQi-2, 0, 0, 0);
tsWeekEnd.SetDateTimeSpan(8-nXingQi, 0, 0, 0);
}
tWeekBegin = t1 - tsWeekBegin;
tWeekEnd = t1 + tsWeekEnd;
CString str1 = tWeekBegin.Format("%Y-%m-%d";
CString str2 = tWeekEnd.Format("%Y-%m-%d";



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值