VC/MFC 时间

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

COleDateTime odt = COleDateTime::GetCurrentTime();
String str = odt.Format("%Y-%m-%d %H:%M:%S");
COleDateTime::Format 的使用,请参阅msdn关于CTR库中strftime, wcsftime的解释
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_strftime.2c_.wcsftime.asp

2.在指定时间的基础上,加上或者减去一段时间后,得到新的日期时间
// MFC:
    COleDateTime odt  =  COleDateTime::GetCurrentTime(); // 得到当前时间
    COleDateTimeSpan odts;
    odts.SetDateTimeSpan( 0 ,  15 ,  0 ,  0 ); // 15个小时的时间差
    odt  +=  odts;
    CString str  =  odt.Format( " %Y-%m-%d %H:%M:%S " );

// SDK:
// FILETIME是以100纳秒作为单位
// 以下宏定义了1小时内有多少个该单位
#define  Nano100_SEC_IN_HOUR (ULONGLONG)60*60*10000000

SYSTEMTIME st;
GetLocalTime( & st);
FILETIME ft = {0} ;
SystemTimeToFileTime( & st,  & ft);
ULARGE_INTEGER ui;
ui.LowPart  =  ft.dwLowDateTime;
ui.HighPart  =  ft.dwHighDateTime;
ui.QuadPart  +=   16   *  Nano100_SEC_IN_HOUR; // 当前时间加上16个小时后的时间
ft.dwLowDateTime  =  ui.LowPart;
ft.dwHighDateTime  =  ui.HighPart;
FileTimeToSystemTime( & ft,  & st);
// st结构体中的变量即最后结果

3.根据给定的日期,得到该日期的星期数,再得到该星期开始和结束的日期
这个功能是当时帮一个mm的忙完成的。。呵呵

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 " ); 

 


4. CString -> COleDateTime
    CString str  =   " 2006-09-04 11:22:33 " ;
    COleVariant VariantTime;
    VariantTime  =  str;
    VariantTime.ChangeType(VT_DATE);
    COleDateTime DataTime  =  VariantTime;
     int  nYear  =  DataTime.GetYear();
     int  nMonth  =  DataTime.GetMonth();
     int  nDay  =  DataTime.GetDay();
     int  nHour  =  DataTime.GetHour();
     int  nMin  =  DataTime.GetMinute();
     int  nSec  =  DataTime.GetSecond();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值