Java 时间(日期)相加处理

/**
 * 
 * 
 * 在程序中,经常要对时间进行操作,但是并没有时间类型的数据。那么,我们可以自己实现一个时间类,来满足程序中的需要。
 * 定义名为MyTime的类,其中应有三个整型成员:时(hour),分(minute),秒(second)
 * 

 * 为MyTime类添加以下方法: 

 *     (1).diaplay() 打印时、分、秒 

 * (2).addSecond(int sec) 对秒进行加运算。

 *     (3).addMinute(int min) 对分进行加运算。 

 *     (4).addHour(int hou) 对时进行加运算。

 *     (5).subSecond(int sec) 对秒进行减运算。 

 *    (6).subMinute(int min) 对分进行减运算。

 *     (7).subHour(int hou) 对时进行减运算。

 */


class MyTime {
	private int hour;
	private int minute;
	private int second;

	public MyTime(int hour, int minute, int second) {
		this.hour = hour;
		this.minute = minute;
		this.second = second;
	}

	public void setHour(int hour) {
		this.hour = hour;
	}

	public void setMinute(int minute) {
		this.minute = minute;
	}

	public void setSecond(int second) {
		this.second = second;
	}

	public int getHour() {
		return this.hour;
	}

	public int getMinute() {
		return this.minute;
	}

	public int getSecond() {
		return this.second;
	}

	// (1).diaplay() 打印时、分、秒
	public void diaplay() {
		String HH;
		String MM;
		String SS;
		if(this.hour < 10) {
			 HH = "0" + this.hour;
		} else {
			 HH = "" +  this.hour;
		}
		if(this.minute < 10) {
			 MM = "0" + this.minute;
		} else {
			 MM = "" +  this.minute;
		}
		if(this.second < 10) {
			 SS = "0" + this.second;
		} else {
		     SS = "" + this.second;
		}
		System.out.println(HH + ":" + MM + ":" + SS);
	}

	// (2).addSecond(int sec) 对秒进行加运算。
	public void addSecond(int sec) {
		int ss = sec % 60;
		int mm = (sec / 60) % 60;
		int hh = sec / (60 * 60);
		if ((this.second + ss) < 60) {
			this.second += ss;
			this.minute += mm;
			if(this.minute > 60) {
				this.minute = this.minute % 60;
				this.hour++;
				this.hour += hh;
				if(this.hour > 24) {
					this.hour = this.hour % 24;
				}
			}
			this.hour += hh;
			if(this.hour > 24 ){
				this.hour = this.hour % 24;
			} 
		} else {
			this.second = (this.second + ss) % 60;
			this.minute++;
			this.minute += mm;
			if(this.minute > 60) {
				this.minute = this.minute % 60;
				this.hour++;
				this.hour += hh;
				if(this.hour > 24) {
					this.hour = this.hour % 24;
				}
			}
			this.hour += hh;
			if(this.hour > 24 ){
				this.hour = this.hour % 24;
			}
		}
		diaplay();
	}

	// (3).addMinute(int min) 对分进行加运算。
	public void addMinute(int min) {
		int mm = min % 60;
		int hh = min /60;
		if ((this.minute + mm) < 60) {
			this.minute += mm;
			this.hour += hh;
			if(this.hour > 24) {
				this.hour = this.hour % 24;
			}
		} else {
			this.minute = (this.minute + mm) % 60;
			this.hour++;
			this.hour += hh;
			if(this.hour > 24) {
				this.hour = this.hour % 24;
			}
		}
		diaplay();
	}

	// (4).addHour(int hou) 对时进行加运算。
	public void addHour(int hou) {
		if ((this.hour + hou) < 24) {
			this.hour += hou;
		} else {
			this.hour = (this.hour + hou) % 24;
		}
		diaplay();
	}

	// (5).subSecond(int sec) 对秒进行减运算。
	public void subSecond(int sec) {
		int ss = sec % 60;
		int mm = (sec / 60) % 60 ;
		int hh = sec / (60 * 60);
		if ((this.second - ss) >= 0) {
			this.second -= ss;
			this.minute -= mm;
			if(this.minute < 0) {
				this.minute = this.minute + 60;
				this.hour--;
				if(this.hour < 0) {
					this.hour += 24;
				}
			}
			this.hour -= hh;
			if(this.hour < 0) {
				this.hour += 24;
			}
		} else {
			this.second = this.second + 60 -ss;
			this.minute--;
			if((this.minute - mm) >= 0) {
				this.minute -= mm;
			} else {
				this.minute = (this.minute + 60 -mm) % 60;
				this.hour--;
				if((this.hour - hh) >= 0) {
					this.hour -= hh;
				} else {
					this.hour = (this.hour  -hh) % 24 + 24;
				}
			}
		}
		diaplay();
	}

	// (6).subMinute(int min) 对分进行减运算。
	public void subMinute(int min) {
		int mm = min % 60;
		int hh = min / 60;
		if ((this.minute - mm) >= 0) {
			this.minute -= mm;
			this.hour -= hh;
			if(this.hour < 0) {
				this.hour = this.hour % 24 + 24;
			}
		} else {
			this.minute = (this.minute + 60 -mm) % 60;
			this.hour--;
			if((this.hour - hh) >= 0) {
				this.hour -= hh;
			} else {
				this.hour = ((this.hour -hh) % 24 + 24) % 24;
			}
		}
		diaplay();
	}

	// (7).subHour(int hou) 对时进行减运算。
	public void subHour(int hou) {
		hou = hou %24;
		if((this.hour - hou) >= 0) {
			this.hour -= hou;
		} else {
			this.hour = (this.hour + 24 -hou) % 24;
		}
		diaplay();
	}
}

public class Example1 {
	public static void main(String[] args) {
		MyTime time = new MyTime(10, 10, 10);
		time.diaplay();
		time.addSecond(15);
		time.addMinute(35);
		time.addHour(15);

		time.subSecond(15);
		time.subMinute(25);
		time.subHour(15);
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值