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;
}

转载于:https://my.oschina.net/u/186539/blog/55962

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值