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.在指定时间的基础上,加上或者减去一段时间后,得到新的日期时间
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
MFC:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
COleDateTime odt
=
COleDateTime::GetCurrentTime();
//
得到当前时间
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
COleDateTimeSpan odts;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
odts.SetDateTimeSpan(
0
,
15
,
0
,
0
);
//
15个小时的时间差
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
odt
+=
odts;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
CString str
=
odt.Format(
"
%Y-%m-%d %H:%M:%S
"
);
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
SDK:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
FILETIME是以100纳秒作为单位
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
以下宏定义了1小时内有多少个该单位
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
#define
Nano100_SEC_IN_HOUR (ULONGLONG)60*60*10000000
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
SYSTEMTIME st;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
GetLocalTime(
&
st);
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
FILETIME ft
=
{0}
;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
SystemTimeToFileTime(
&
st,
&
ft);
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
ULARGE_INTEGER ui;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
ui.LowPart
=
ft.dwLowDateTime;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
ui.HighPart
=
ft.dwHighDateTime;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
ui.QuadPart
+=
16
*
Nano100_SEC_IN_HOUR;
//
当前时间加上16个小时后的时间
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
ft.dwLowDateTime
=
ui.LowPart;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
ft.dwHighDateTime
=
ui.HighPart;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
FileTimeToSystemTime(
&
ft,
&
st);
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
st结构体中的变量即最后结果
3.根据给定的日期,得到该日期的星期数,再得到该星期开始和结束的日期
这个功能是当时帮一个mm的忙完成的。。呵呵
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
COleDateTime t1, tWeekBegin, tWeekEnd;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
t1.SetDate(
2006
,
8
,
8
);
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
这里需要注意的是西方人的习惯和我们不一样,他们把星期天当作每个星期的第一天,如下面的函数GetDayOfWeek就是如此,所以我做了下面的一些转换
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
int
nXingQi
=
t1.GetDayOfWeek();
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
COleDateTimeSpan tsWeekBegin, tsWeekEnd;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
if
(
1
==
nXingQi )
{
tsWeekBegin.SetDateTimeSpan(6, 0, 0, 0);
tsWeekEnd.SetDateTimeSpan(0, 0, 0, 0);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
else
{
tsWeekBegin.SetDateTimeSpan(nXingQi-2, 0, 0, 0);
tsWeekEnd.SetDateTimeSpan(8-nXingQi, 0, 0, 0);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
tWeekBegin
=
t1
-
tsWeekBegin;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
tWeekEnd
=
t1
+
tsWeekEnd;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
CString str1
=
tWeekBegin.Format(
"
%Y-%m-%d
"
);
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
CString str2
=
tWeekEnd.Format(
"
%Y-%m-%d
"
);
4. CString -> COleDateTime
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
CString str
=
"
2006-09-04 11:22:33
"
;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
COleVariant VariantTime;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
VariantTime
=
str;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
VariantTime.ChangeType(VT_DATE);
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
COleDateTime DataTime
=
VariantTime;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
int
nYear
=
DataTime.GetYear();
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
int
nMonth
=
DataTime.GetMonth();
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
int
nDay
=
DataTime.GetDay();
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
int
nHour
=
DataTime.GetHour();
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
int
nMin
=
DataTime.GetMinute();
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
int
nSec
=
DataTime.GetSecond();