题目描述
- 定义一个描述时间信息的类MyDateTime:
属性:year,month,day,hour,minute,second
方法:- 构造方法:3个
- 分别将6个属性设置为0;
- 根据6个整型形参设置属性;
- 根据另一个MyDateTime对象的属性进行设置;
- 其他方法:
- MyDateTime passTime(int length,int type)(在当前时间的基础上加上length时间段,时间段单位由type决定:1-6分别代表年/月/日/时/分/秒)
- int diffDateTime(MyDateTime dayx ,int measure )(计算当前时间与参数对象dayx之间相差的时间段,时间段单位由measure决定:1-3分别代表天/时/秒)
- int dayInYear()(计算当前时间是一年中的第几天)
- 在另一个类中使用此类的对象,验证其正确性。
代码实现
- MyDateTime.java
public class MyDateTime {
private int year;
private int month;
private int day;
private int hour;
private int minute;
private int second;
/**
* 构造方法:分别将6个属性设置为0
*/
public MyDateTime() {
super();
this.year = 0;
this.month = 0;
this.day = 0;
this.hour = 0;
this.minute = 0;
this.second = 0;
}
/**
* 构造方法:根据6个整型形参设置属性
*
* @param year 年
* @param month 月
* @param day 日
* @param hour 时
* @param minute 分
* @param second 秒
*/
public MyDateTime(int year, int month, int day, int hour, int minute, int second) {
super();
this.year = year;
this.month = month;
this.day = day;
this.hour = hour;
this.minute = minute;
this.second = second;
}
/**
* 构造方法:根据另一个MyDateTime对象的属性进行设置
*
* @param myDateTime MyDateTime对象
*/
public MyDateTime(MyDateTime myDateTime) {
this.year = myDateTime.year;
this.month = myDateTime.month;
this.day = myDateTime.day;
this.hour = myDateTime.hour;
this.minute = myDateTime.minute;
this.second = myDateTime.second;
}
/**
* 在当前时间的基础上加上length时间段,时间段单位由type决定:1-6分别代表年/月/日/时/分/秒
*
* @param length 时间段
* @param type 类型
* @return
*/
public MyDateTime passTime(int length, int type) {
if (type == 1) {
this.year += length;
} else if (type == 2) {
this.month += length;
} else if (type == 3) {
this.day += length;
} else if (type == 4) {
this.hour += length;
} else if (type == 5) {
this.minute += length;
} else if (type == 6) {
this.second += length;
}
return this;
}
/**
* 计算当前时间与参数对象dayx之间相差的时间段,时间段单位由measure决定:1-3分别代表天/时/秒
*
* @param dayx
* @param measure
* @return
*/
public int diffDateTime(MyDateTime dayx, int measure) {
if (measure == 1) {
return dayx.day - this.day;
} else if (measure == 2) {
return dayx.hour - this.hour;
} else if (measure == 3) {
return dayx.second - this.second;
} else {
return 0;
}
}
/**
* 计算当前时间是一年中的第几天
*
* @return
*/
public int dayInYear() {
int dayOfYear = this.day;
for (int i = 0; i < this.month; i++) {
switch (this.month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
dayOfYear += 31;
break;
case 4:
case 6:
case 9:
case 11:
dayOfYear += 30;
case 2:
if (this.year % 400 == 0 || (this.year % 4 == 0 && this.year % 100 != 0)) {
dayOfYear += 29;
} else {
dayOfYear += 28;
}
default:
break;
}
}
return dayOfYear;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
public int getHour() {
return hour;
}
public void setHour(int hour) {
this.hour = hour;
}
public int getMinute() {
return minute;
}
public void setMinute(int minute) {
this.minute = minute;
}
public int getSecond() {
return second;
}
public void setSecond(int second) {
this.second = second;
}
@Override
public String toString() {
return " [year=" + year + ", month=" + month + ", day=" + day + ", hour=" + hour + ", minute="
+ minute + ", second=" + second + "]";
}
}
- MyDateTimeTest.java
public class MyDateTimeTest {
public static void main(String[] args) {
// 构造方法测试
// 分别将6个属性设置为0
MyDateTime myDateTime1 = new MyDateTime();
System.out.println(myDateTime1.toString());
// 根据6个整型形参设置属性
MyDateTime myDateTime2 = new MyDateTime(2020, 3, 28, 15, 23, 25);
System.out.println(myDateTime2.toString());
// 根据另一个MyDateTime对象的属性进行设置;
MyDateTime myDateTime3 = new MyDateTime(myDateTime2);
System.out.println(myDateTime3.toString());
System.out.println();
// passTime测试
myDateTime1.passTime(10, 1);
System.out.println("myDateTime1.passTime(10, 1);" + myDateTime1.toString());
myDateTime1.passTime(10, 2);
System.out.println("myDateTime1.passTime(10, 2);" + myDateTime1.toString());
myDateTime1.passTime(10, 3);
System.out.println("myDateTime1.passTime(10, 3);" + myDateTime1.toString());
myDateTime1.passTime(10, 4);
System.out.println("myDateTime1.passTime(10, 4);" + myDateTime1.toString());
myDateTime1.passTime(10, 5);
System.out.println("myDateTime1.passTime(10, 5);" + myDateTime1.toString());
myDateTime1.passTime(10, 6);
System.out.println("myDateTime1.passTime(10, 6);" + myDateTime1.toString());
System.out.println();
// diffDateTime测试
MyDateTime dateTime = new MyDateTime(10, 11, 12, 13, 14, 15);
System.out.println("myDateTime1" + myDateTime1);
System.out.println("dateTime" + dateTime);
int dayDiff = myDateTime1.diffDateTime(dateTime, 1);
System.out.println("相差天数:" + dayDiff);
int hourDiff = myDateTime1.diffDateTime(dateTime, 2);
System.out.println("相差小时数:" + hourDiff);
int secondDiff = myDateTime1.diffDateTime(dateTime, 3);
System.out.println("相差秒数:" + secondDiff);
System.out.println();
// dayInYear测试
int dayInYear = myDateTime1.dayInYear();
System.out.println("myDateTime1一年中的第几天:" + dayInYear);
}
}
运行结果展示
本节完!
更多信息交流请加QQ:1406073270