C++每日練筆之時間類(基類)

在個人命名空間TYCppStdLib中對於日期和時間的操做很是豐富。
共有六個類和一組全局函數。
六個類分別是:
CDate
CTime
CDateAndTime
CMyDate
CMyTime
CMyDateAndTime

前三個類不帶類的成員變量,直接操做用戶給定的數據。
前三個類的成員函數與全局函數一一對應。
後三個類帶類的成員變量,成員函數操做類的成員變量。

如今發佈的是CTime類(基類,完成基本功能,待更新)。

源代碼以下:

/*- ==========================================================
*     文件名  :CTime.h
*     開發人員:袁培榮
*     當前版本:1.0.0.2595
*     建立時間:2012-04-23
*     修改時間:2012-05-01
*     功能說明:時間類(基類)
*     版權說明:版權全部 袁培榮 YuanPeirong 
*     編譯環境:Windows 7(x64) SP1 簡體中文專業版
*     編譯器:  Visual Studio 2010 SP1(中文旗艦版)
				MinGW 2011118
				Visual C++ 6.0 SP6(中文企業版)
- ==========================================================*/

#ifndef CTime_H_TYCppStdLib
#define CTime_H_TYCppStdLib

#ifdef CTime_DLL_API
#else
#define CTime_DLL_API _declspec(dllimport)
#endif

#include <string>
#include "Windows.h"

using namespace std;

namespace TYCppStdLib
{   
	class CTime_DLL_API CTime
	{
	public:
	    CTime();
		virtual ~CTime();
	
		virtual int GetHour();   // 獲取時
		virtual int GetMinute(); // 獲取分
		virtual int GetSecond(); // 獲取秒
		
		virtual bool SetHour(int hour);     // 設置時
		virtual bool SetMinute(int minute); // 設置分
		virtual bool SetSecond(int second); // 設置秒
		
		// 獲取時間
		virtual void GetTime(int &hour,int &minute,int &second);
		//virtual string GetTime(const string strDivide="-");
		//virtual void GetTime(char *times,char *divide=":");
		
		// 設置時間
		virtual bool SetTime(int hour,int minute,int second);  
		//virtual bool SetTime(char *times);

		// 檢查時間是否合法
		virtual bool TimeIsValid(int hour,int minute,int second); 
	};
}

#endif

/*- ==========================================================
*     文件名  :CTime.cpp
*     開發人員:袁培榮
*     當前版本:1.0.0.2595
*     建立時間:2012-04-23
*     修改時間:2012-05-01
*     功能說明:時間類(基類)
*     版權說明:版權全部 袁培榮 YuanPeirong 
*     編譯環境:Windows 7(x64) SP1 簡體中文專業版
*     編譯器:  Visual Studio 2010 SP1(中文旗艦版)
				MinGW 2011118
				Visual C++ 6.0 SP6(中文企業版)
- ==========================================================*/

#ifndef CTime_DLL_ForAPI
#define CTime_DLL_ForAPI

#define CTime_DLL_API _declspec(dllexport)

#endif

#include "../../Include/DateAndTime/CTime.h"

/* 	typedef struct _SYSTEMTIME { // st 
	WORD wYear; 
	WORD wMonth; 
	WORD wDayOfWeek; 
	WORD wDay; 
	WORD wHour; 
	WORD wMinute; 
	WORD wSecond; 
	WORD wMilliseconds; 
	} SYSTEMTIME; */

//構造函數
TYCppStdLib::CDate::CTime()
{
    //空函數
}

//析構函數
TYCppStdLib::CDate::~CTime()
{
    //空函數
}
	
// 獲取時
int TYCppStdLib::CTime::GetHour()
{
    SYSTEMTIME st;
	GetLocalTime(&st);
	return st.wHour;
}

// 獲取分
int TYCppStdLib::CTime::GetMinute()
{
    SYSTEMTIME st;
	GetLocalTime(&st);
	return st.wMinute;
}

// 獲取秒
int TYCppStdLib::CTime::GetSecond()
{
    SYSTEMTIME st;
	GetLocalTime(&st);
	return st.wSecond;
}

// 設置時
bool TYCppStdLib::CTime::SetHour(int hour)
{
    SYSTEMTIME st;
	if(hour<0 || hour>23)
	    return false;
	GetLocalTime(&st);
	st.wHour=hour;
	if(SetLocalTime(&st))
	    return true;
	return false;
}
 
// 設置分                  
bool TYCppStdLib::CTime::SetMinute(int minute)
{
    SYSTEMTIME st;
	if(minute<0 || minute>59)
	    return false;
	GetLocalTime(&st);
	st.wMinute=minute;
	if(SetLocalTime(&st))
	    return true;
	return false;
}
 
// 設置秒              
bool TYCppStdLib::CTime::SetSecond(int second)
{
    SYSTEMTIME st;
	if(second<0 || second>59)
	    return false;
	GetLocalTime(&st);
	st.wSecond=second;
	if(SetLocalTime(&st))
	    return true;
	return false;
}

// 獲取時間
void TYCppStdLib::CTime::GetTime(int &hour,int &minute,int &second)
{
    hour=GetHour();
	minute=GetMinute();
	second=GetSecond();
}
    
// void TYCppStdLib::CTime::GetTime(char *times,char *divide=":")
// {

// }

// 設置時間
bool TYCppStdLib::CTime::SetTime(int hour,int minute,int second)
{
    if(!SetHour(hour))
	    return false;
	if(!SetMinute(minute))
	    return false;
	return SetSecond(second);
}

// bool TYCppStdLib::CTime::SetTime(char *times)
// {

// }

// 檢查時間是否合法
bool TYCppStdLib::CDateAndTime::TimeIsValid(int hour,int minute,int second)
{
    if(hour<0 || hour>23)
	    return false;
	if(minute<0 || minute>59)
	    return false;
	if(second<0 || second>59)
	    return false;
	return true;
}
相關文章
相關標籤/搜索