使用时间类处理时间问题

定义一个时间类

class Time//时间类
{
public:
	void set_time( );//设置时间

	void show_time( );//显示时间  

	int add_a_sec();//增加1秒

	int add_a_minute();//增加1分钟

	int add_a_hour();//增加1个小时

	int add_seconds(int n);//增加n秒钟

	int add_minutes(int n);//增加n分钟

	int add_hours(int n);//增加n小时

private:
	bool is_time(int, int, int);//判断时间是否正确

	int hour;//时
	int minute;//分
	int sec;//秒
};

函数名:set_time()

函数功能:设置时间

//设置时间
void Time::set_time( )
{
	char c1,c2;

	cout<<"请输入时间(格式hh:mm:ss)";

	while(1)
	{
		cin>>hour>>c1>>minute>>c2>>sec;

		if(c1!=‘:‘||c2!=‘:‘)
		{
			cout<<"格式不正确,请重新输入"<<endl;
		}
		else if (!is_time(hour,minute,sec))
		{
			cout<<"时间非法,请重新输入"<<endl;
		}
		else
		{
			break;
		}
	}
}

函数名:show_time()

函数功能:显示时间

//输出时间
void Time::show_time( )
{
	cout<<hour<<":"<<minute<<":"<<sec<<endl;
}

函数名:is_time

函数功能:判断时间格式是否正确

//判断时间格式是否正确
bool Time::is_time(int h,int m, int s)
{
	if (h<=0 ||h>23 || m<=0 ||m>59 || s<0 ||s>59)
	{
		return false;
	}

	return true;
}

函数名:add_a_sec()

函数功能:增加1秒

//增加1秒钟
int Time::add_a_sec()
{
	sec++;

	if(60 == sec)
	{
		sec = 0;//秒钟清零

		add_a_minute();//分钟增加1
	}

	return sec;
}

函数名:add_a_minute()

函数功能:增加1分钟

//增加1分钟
int Time::add_a_minute()
{
	minute++;

	if(60 == minute)
	{
		minute = 0;//分钟清零

		add_a_hour();//时钟加1
	}

	return minute;
}

函数名:add_a_hour()

函数功能:增加1小时

//增加1个小时
int Time::add_a_hour()
{
	hour++;

	if(24 == hour)
	{
		hour = 0;//时钟清零
	}

	return hour;
}

函数名:add_seconds(int n)

函数功能:增加n秒

//增加n秒
int Time::add_seconds(int n)
{
	sec = sec + n;

	if(sec>60)
	{
		int m = sec / 60;//计算多出的分钟
		int s = sec % 60;//计算多出的秒钟

		add_minutes(m);//增加m分钟

		sec = s;
	}

	return sec;
}

函数名:add_minutse(int n)

函数功能:增加n分钟

//增加n分钟
int Time::add_minutes(int n)
{
	minute = minute + n;

	if(minute>60)
	{
		int h = minute / 60;//计算增加时间后的小时

		int m = minute % 60;//计算增加时间后的分钟

		add_hours(h);//增加h个小时

		minute = m;
	}

	return minute;
}

函数名:add_hours(int n)

函数功能:增加n小时

//增加n小时
int Time::add_hours(int n)
{
	hour = hour + n;

	if(hour>24)
	{
		int h = hour % 24;

		hour = h;
	}

	return hour;
}

程序的全部代码:

#include <iostream>

using namespace std;

class Time//时间类
{
public:
	void set_time( );//设置时间

	void show_time( );//显示时间  

	int add_a_sec();//增加1秒

	int add_a_minute();//增加1分钟

	int add_a_hour();//增加1个小时

	int add_seconds(int n);//增加n秒钟

	int add_minutes(int n);//增加n分钟

	int add_hours(int n);//增加n小时

private:
	bool is_time(int, int, int);//判断时间是否正确

	int hour;//时
	int minute;//分
	int sec;//秒
};

//设置时间
void Time::set_time( )
{
	char c1,c2;

	cout<<"请输入时间(格式hh:mm:ss)";

	while(1)
	{
		cin>>hour>>c1>>minute>>c2>>sec;

		if(c1!=‘:‘||c2!=‘:‘)
		{
			cout<<"格式不正确,请重新输入"<<endl;
		}
		else if (!is_time(hour,minute,sec))
		{
			cout<<"时间非法,请重新输入"<<endl;
		}
		else
		{
			break;
		}
	}
}

//输出时间
void Time::show_time( )
{
	cout<<hour<<":"<<minute<<":"<<sec<<endl;
}

//判断时间格式是否正确
bool Time::is_time(int h,int m, int s)
{
	if (h<=0 ||h>23 || m<=0 ||m>59 || s<0 ||s>59)
	{
		return false;
	}

	return true;
}

//增加1秒钟
int Time::add_a_sec()
{
	sec++;

	if(60 == sec)
	{
		sec = 0;//秒钟清零

		add_a_minute();//分钟增加1
	}

	return sec;
}

//增加1分钟
int Time::add_a_minute()
{
	minute++;

	if(60 == minute)
	{
		minute = 0;//分钟清零

		add_a_hour();//时钟加1
	}

	return minute;
}

//增加1个小时
int Time::add_a_hour()
{
	hour++;

	if(24 == hour)
	{
		hour = 0;//时钟清零
	}

	return hour;
}

//增加n秒
int Time::add_seconds(int n)
{
	sec = sec + n;

	if(sec>60)
	{
		int m = sec / 60;//计算多出的分钟
		int s = sec % 60;//计算多出的秒钟

		add_minutes(m);//增加m分钟

		sec = s;
	}

	return sec;
}

//增加n分钟
int Time::add_minutes(int n)
{
	minute = minute + n;

	if(minute>60)
	{
		int h = minute / 60;//计算增加时间后的小时

		int m = minute % 60;//计算增加时间后的分钟

		add_hours(h);//增加h个小时

		minute = m;
	}

	return minute;
}

//增加n小时
int Time::add_hours(int n)
{
	hour = hour + n;

	if(hour>24)
	{
		int h = hour % 24;

		hour = h;
	}

	return hour;
}

int main( )
{
	Time t1;  

	t1.set_time( );//设置一个时间

	cout<<"显示设置的时间:";
	t1.show_time();

	cout<<"增加1秒后的时间:";
	t1.add_a_sec();
	t1.show_time();

	cout<<"增加1分钟后的时间:";
	t1.add_a_minute();
	t1.show_time();

	cout<<"增加1小时后的时间:";
	t1.add_a_hour();
	t1.show_time();

	cout<<"增加60秒后的时间:";
	t1.add_seconds(60);
	t1.show_time();

	cout<<"增加40分钟后的时间:";
	t1.add_minutes(40);
	t1.show_time();

	cout<<"增加10小时后的时间:";
	t1.add_hours(10);
	t1.show_time();

	return 0;
}

执行结果:



使用时间类处理时间问题,布布扣,bubuko.com

时间: 2025-01-15 04:52:07

使用时间类处理时间问题的相关文章

使用静态成员处理时间类

程序代码: #include <iostream> using namespace std; class Time { public: Time(int=0,int=0,int=0); void show_time( ); //根据is_24和from0,输出适合形式-20:23:5/8:23:5 pm/08:23:05 pm void add_seconds(int); //增加n秒钟 void add_minutes(int); //增加n分钟 void add_hours(int); /

处理时间的类 —— System类、Date类 、SimpleDateFormat类 与 Calendar类

在我们以往的编程中,就有过通过运行前和运行后时间差来判断时间复杂度的例子,再扯得远一点,我们在C语言中制造随机数的操作,也要用到有关时间的函数.而且,在我们未来的编程中,也会时不时要用到能够读取当前时间的方法,所以,本篇博文所讲解的类,其实还是挺常用的,所以本人专门写一篇博文来为同学们展示下这个类的常用方法的用法 System类: 概述: System 类包含一些有用的类字段和方法.它不能被实例化. 说真的,System类与时间相关的主要原因就是它的一个方法,那么,现在,本人来展示下这个类的常用

iOS中处理时间的类及使用

1. NSDate这个类就是生成一个date如果你用[NSDate date]这个最最常用的方法你可以得到系统当前的时间(UTC时间,不管你当前时区的)比如:NSDate *date = [NSDate date];NSLog(@"%@", date);输出:2013-04-27 07:25:59 +0000 在类的头文件NSDate.h中,我们可以看到所有的方法和类方法,但没有任何一个数据,所以我们可以打印出时间的字符串,但没办法单独去获得年.月.日等信息.在苹果的官方文档上说这个类

Java8 时间处理类的使用实践(LocalDate...)

有了它,谁还在用Date?Calendar? 其实也不能这么绝对,毕竟还没到那个程度上.Java8 新增了处理时间的一组类(LocalDate.LocalDateTime.LocalTime),刚开始使用时觉得非常费劲,没有Calendar好用,但是真的使用之后觉得还是比较好用的啊.建议大家以后多多使用.废话少说,看代码~ 1.Date与LocalDate的互转 Date转LocalDate: Date date = new Date(); LocalDate localDate = date.

Java LocalDateTime,DateTimeFomatter----JDK8新时间类的简单使用

JDK8中增加了一系列时间的类, (据说)是为了干掉过去的Date,Calendar类的, 过去的Date类(据说)有着线程不安全等诸多弊端, 至于我的个人感受就是用起来实在是很麻烦,我一般封装成几个常用的方法以后每次就调方法,再也不想看里面是怎么实现的了. 而发现了LocalDateTime这种新类以后,经过我的简单的试用,觉得完全可以取代掉之前使用时间的一切方法.非常好用,太好用了. 下面是简单的使用教程: 1,按照自由格式获取当前时间 public static String getTod

Linux学习笔记之常用用户管理类命令

开始这个话题之前应该先了解下/etc/shadow这个文件中的构造,对于列所代表的意思大体有个了解,先以ftpuser账户来介绍:后边会给出一些相应的例题来做使用说明补充(好吧我承认,这,又是一篇博客作业^_^万恶的标题党). ftpuser:$6$T9WUEls/$AK4hTO1bZ7MXW7VoMej8e7tVG1qqxPy5axVJAAIz4m6uuzZmoYDcQjUG2XlXx7klx/i8yJ1luZDtoKYwJAMa4.:16929:0:99999:7:5:: 总共有9个字段被"

下载数据到Excel,工具类

使用反射将model数据下载到Excel中 package test.upload.utils; import java.lang.reflect.Method;import java.math.BigDecimal;import java.text.SimpleDateFormat;import java.util.Date;import java.util.List;import java.util.Map; import org.apache.poi.hssf.usermodel.HSSF

WorldWind源码剖析系列:设置类SettingsBase

PluginSDK中的星球设置类WorldSettings 和WorldWind.程序设置类WorldWindSettings均继承自父类SettingsBase.类图如下所示.其中父类SettingsBase内嵌了枚举型LocationType,子类WorldSettings的定义文件中附带了定义了测量模式的枚举型. 父类SettingsBase主要是对设置文件相关的设置文件名.版本.路径.载入.保存等于文件处理相关的顶层抽象.主要是以XML文件保存的,采用.NET平台提供的XmlSerial

WorldWind源码剖析系列:缓冲类Cache

缓冲类Cache主要用于在最小的限制条件下保存从远程服务器通过网络下载下来的地理空间数据,以便当用户处于离线状态时能够使用这些已经缓冲好的数据.Google Earth也采用类似机制处理用户离线浏览漫游问题.该类类图如下. 提供的主要参数设置有:缓冲区上限CacheUpperLimit(默认最大为2GB).缓冲区上限CacheUpperLimit(默认最大为2GB).缓冲区下限CacheLowerLimit(默认上限的75%,即1.5GB).缓冲区目录CacheDirectory.缓冲区清理频率