C++每日练笔之时间类(基类)

 1 在我的命名空间TYCppStdLib中对于日期和时间的操作非常丰富。
 2 共有六个类和一组全局函数。
 3 六个类分别是:
 4 CDate
 5 CTime
 6 CDateAndTime
 7 CMyDate
 8 CMyTime
 9 CMyDateAndTime
10 
11 前三个类不带类的成员变量,直接操作用户给定的数据。
12 前三个类的成员函数与全局函数一一对应。
13 后三个类带类的成员变量,成员函数操作类的成员变量。
14 
15 现在发布的是CTime类(基类,完成基本功能,待更新)。
16 
17 源代码如下:

 

 1 /*- ==========================================================
 2 *     文件名  :CTime.h
 3 *     开发人员:袁培荣
 4 *     当前版本:1.0.0.2595
 5 *     创建时间:2012-04-23
 6 *     修改时间:2012-05-01
 7 *     功能说明:时间类(基类)
 8 *     版权说明:版权所有 袁培荣 YuanPeirong 
 9 *     编译环境:Windows 7(x64) SP1 简体中文专业版
10 *     编译器:  Visual Studio 2010 SP1(中文旗舰版)
11                 MinGW 2011118
12                 Visual C++ 6.0 SP6(中文企业版)
13 - ==========================================================*/
14 
15 #ifndef CTime_H_TYCppStdLib
16 #define CTime_H_TYCppStdLib
17 
18 #ifdef CTime_DLL_API
19 #else
20 #define CTime_DLL_API _declspec(dllimport)
21 #endif
22 
23 #include <string>
24 #include "Windows.h"
25 
26 using namespace std;
27 
28 namespace TYCppStdLib
29 {   
30     class CTime_DLL_API CTime
31     {
32     public:
33         CTime();
34         virtual ~CTime();
35     
36         virtual int GetHour();   // 获取时
37         virtual int GetMinute(); // 获取分
38         virtual int GetSecond(); // 获取秒
39         
40         virtual bool SetHour(int hour);     // 设置时
41         virtual bool SetMinute(int minute); // 设置分
42         virtual bool SetSecond(int second); // 设置秒
43         
44         // 获取时间
45         virtual void GetTime(int &hour,int &minute,int &second);
46         //virtual string GetTime(const string strDivide="-");
47         //virtual void GetTime(char *times,char *divide=":");
48         
49         // 设置时间
50         virtual bool SetTime(int hour,int minute,int second);  
51         //virtual bool SetTime(char *times);
52 
53         // 检查时间是否合法
54         virtual bool TimeIsValid(int hour,int minute,int second); 
55     };
56 }
57 
58 #endif
  1 /*- ==========================================================
  2 *     文件名  :CTime.cpp
  3 *     开发人员:袁培荣
  4 *     当前版本:1.0.0.2595
  5 *     创建时间:2012-04-23
  6 *     修改时间:2012-05-01
  7 *     功能说明:时间类(基类)
  8 *     版权说明:版权所有 袁培荣 YuanPeirong 
  9 *     编译环境:Windows 7(x64) SP1 简体中文专业版
 10 *     编译器:  Visual Studio 2010 SP1(中文旗舰版)
 11                 MinGW 2011118
 12                 Visual C++ 6.0 SP6(中文企业版)
 13 - ==========================================================*/
 14 
 15 #ifndef CTime_DLL_ForAPI
 16 #define CTime_DLL_ForAPI
 17 
 18 #define CTime_DLL_API _declspec(dllexport)
 19 
 20 #endif
 21 
 22 #include "http://www.cnblogs.com/Include/DateAndTime/CTime.h"
 23 
 24 /*     typedef struct _SYSTEMTIME { // st 
 25     WORD wYear; 
 26     WORD wMonth; 
 27     WORD wDayOfWeek; 
 28     WORD wDay; 
 29     WORD wHour; 
 30     WORD wMinute; 
 31     WORD wSecond; 
 32     WORD wMilliseconds; 
 33     } SYSTEMTIME; */
 34 
 35 //构造函数
 36 TYCppStdLib::CDate::CTime()
 37 {
 38     //空函数
 39 }
 40 
 41 //析构函数
 42 TYCppStdLib::CDate::~CTime()
 43 {
 44     //空函数
 45 }
 46     
 47 // 获取时
 48 int TYCppStdLib::CTime::GetHour()
 49 {
 50     SYSTEMTIME st;
 51     GetLocalTime(&st);
 52     return st.wHour;
 53 }
 54 
 55 // 获取分
 56 int TYCppStdLib::CTime::GetMinute()
 57 {
 58     SYSTEMTIME st;
 59     GetLocalTime(&st);
 60     return st.wMinute;
 61 }
 62 
 63 // 获取秒
 64 int TYCppStdLib::CTime::GetSecond()
 65 {
 66     SYSTEMTIME st;
 67     GetLocalTime(&st);
 68     return st.wSecond;
 69 }
 70 
 71 // 设置时
 72 bool TYCppStdLib::CTime::SetHour(int hour)
 73 {
 74     SYSTEMTIME st;
 75     if(hour<0 || hour>23)
 76         return false;
 77     GetLocalTime(&st);
 78     st.wHour=hour;
 79     if(SetLocalTime(&st))
 80         return true;
 81     return false;
 82 }
 83  
 84 // 设置分                  
 85 bool TYCppStdLib::CTime::SetMinute(int minute)
 86 {
 87     SYSTEMTIME st;
 88     if(minute<0 || minute>59)
 89         return false;
 90     GetLocalTime(&st);
 91     st.wMinute=minute;
 92     if(SetLocalTime(&st))
 93         return true;
 94     return false;
 95 }
 96  
 97 // 设置秒              
 98 bool TYCppStdLib::CTime::SetSecond(int second)
 99 {
100     SYSTEMTIME st;
101     if(second<0 || second>59)
102         return false;
103     GetLocalTime(&st);
104     st.wSecond=second;
105     if(SetLocalTime(&st))
106         return true;
107     return false;
108 }
109 
110 // 获取时间
111 void TYCppStdLib::CTime::GetTime(int &hour,int &minute,int &second)
112 {
113     hour=GetHour();
114     minute=GetMinute();
115     second=GetSecond();
116 }
117     
118 // void TYCppStdLib::CTime::GetTime(char *times,char *divide=":")
119 // {
120 
121 // }
122 
123 // 设置时间
124 bool TYCppStdLib::CTime::SetTime(int hour,int minute,int second)
125 {
126     if(!SetHour(hour))
127         return false;
128     if(!SetMinute(minute))
129         return false;
130     return SetSecond(second);
131 }
132 
133 // bool TYCppStdLib::CTime::SetTime(char *times)
134 // {
135 
136 // }
137 
138 // 检查时间是否合法
139 bool TYCppStdLib::CDateAndTime::TimeIsValid(int hour,int minute,int second)
140 {
141     if(hour<0 || hour>23)
142         return false;
143     if(minute<0 || minute>59)
144         return false;
145     if(second<0 || second>59)
146         return false;
147     return true;
148 }

 

posted @ 2012-05-03 12:02  天远  阅读(397)  评论(0)    收藏  举报

版权所有 © 2010-2020 YuanPeirong TianYuan All Rights Reserved. Powered By 天远