2019独角兽企业重金招聘Python工程师标准>>>

在我的命名空间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 2011118Visual 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 2011118Visual 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

C++每日练笔之时间类(基类)相关推荐

  1. C# 子类实例化基类 基类使用不了子类的方法_C#学习笔记09--构造方法/析构方法/继承/多态/封装...

    一.构造方法 当创建一个类时, 系统会自动创建一个默认的无参构造方法, 这个方法和类同名, 在创建对象的时候自动调用. 默认的构造方法里面什么也没有, 重写之后就可以在创建对象的时候同时搞点事情了. ...

  2. C# 子类实例化基类 基类使用不了子类的方法_老话题:6个方法,检验你有没有正确使用设计模式...

    方法一:设计模式是为了消除继承 大部分设计模式,是让你在在面向对象的基础上尽量消除继承的手段.所以,如果你用了一些设计模式,减少了继承,那你八成用对了.如果你用了一大堆设计模式,然而继承却越来越频繁, ...

  3. C# 子类实例化基类 基类使用不了子类的方法_C#学习笔记11--接口/泛型

    一.接口 1.1简介: 接口是一种特殊的引用类型, 和类很相似. 它定义了属性, 方法, 事件, 这些都作为接口的成员/ 接口中只包含成员的声明, 成员的定义是派生类的责任(谁继承谁实现). 接口在某 ...

  4. C# 子类实例化基类 基类使用不了子类的方法_C#高级编程面试考题

    一.简答题 1.简述C#中的所有访问修饰符及访问权限 private(私有的) 给类,及所有类成员使用 所有类成员的默认访问修饰符 可访问范围 当前类自身 public(公开的) 给类,及所有类成员使 ...

  5. 继承类 基类的赋值_Chapter10:继承与派生(四)

    之前的文章把继承和派生的基本概念和内部原理都大致理清了.但是类可以视作是一种特殊的数据类型--它也具有转换的功能,称为转型,这一节展开讨论它,以及如何通过指针跨越权限访问不同成员的技巧. 1.类的转型 ...

  6. C# 子类实例化基类 基类使用不了子类的方法_C#中的类、方法和属性

    这节讲C#中的类,方法,属性.这是面向对象编程中,我们最直接打交道的三个结构.    类: 类(class)是面向对象中最基本的单元,它是一种抽象,对现实世界中事物的抽象,在C#中使用class关键字 ...

  7. C++学习笔记-----存在多态调用时,为基类定义虚析构函数

    在C++的继承体系中,构造函数和析构函数的执行顺序是完全相反的. 对于构造函数:从继承体系的最顶层的基类开始,一步步往下构建.即构造顺序是  基类--->>派生类. 对于析构函数:从继承体 ...

  8. 在保护继承中基类的共有成员_C++学习大纲:继承方式的调整

    C++ 继承方式的调整 在任何继承方式中,除了基类的private成员外,都可以在派生类中分别调整其访问控制. 调整格式 [public: | protected: | private: ] :: ; ...

  9. 关于Java抽象类,接口与实现接口及派生类继承基类

    1. 抽象类 抽象类就是有一个或多个方法只被声明而未被实现. 抽象方法的声明以分号结束,并且用关键字abstract来说明它以标识它为抽象方法. 格式: public abstract class 类 ...

最新文章

  1. Vbox在Linux 5上安装Oracle 11gR2 RAC
  2. 掀起网络狂欢效应的六条金科玉律
  3. angular Ng-Zrro树形控件 异步加载
  4. Spring AOP实现原理解析
  5. camunda流程引擎如此简单「四」
  6. 被动模式下FTP不能建立数据会话问题
  7. 使用FormData对象
  8. LeetCode--35. 搜索插入位置(遍历,二分法)
  9. linux服务器配置python环境_服务器python环境配置福利,CentOS ,Linux 一键下载python3和环境配置...
  10. VUE ---- Windows7环境下安装
  11. H264/H265码流的编码码率设置
  12. 【转载】GGB0/OB28/OKC7/GGB1/OBBH/OKC9 FICO增强
  13. 视频特效如何制作?快把这些方法收好
  14. Activiti7.0实战学习(九):查询历史表中的数据
  15. halcon calculate_lines_gauss_parameters算子详解
  16. Python-Opencv 形态学+算子实现轮廓提取
  17. js - 在指定位置添加指定字符
  18. 无障碍设计标准中的对比度
  19. 开关电源学习——基本元件之电容
  20. 3d打印光固化好还是热固化好_光固化3D打印机定制

热门文章

  1. Java Protected 解读
  2. javascript的id、class、元素选择器
  3. 服务器客户端对话java_java中的服务器和客户机如何使用
  4. Android——build.prop 解析
  5. python爬虫02
  6. Git使用手册:HTTPS和SSH方式的区别和使用
  7. CentOS/Ubuntu制作自动安装arm iso镜像
  8. RedisUtils工具类
  9. MySQL中with rollup的用法
  10. rabbitmq消息确认机制及死信队列的使用