第1关:练习-Java常用类之Calendar类
任务描述
本关任务:计算两个日期之间的间隔时间。
编程要求
仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 中计算两个日期之间的间隔时间,具体要求如下:
-
Test 类中定义了一个 getTime(Date d1,Date d2) 的方法,其中具有两个参数,计算 d2 距离 d1 已经过去了多久,返回类型为 String;
-
如果不到 1 分钟,返回:“刚刚”;
-
如果超出 1 分钟但是没有超过 1 小时,返回:“xx分钟前”,有小数点的向上取整;
-
如果超出 1 小时但是没有超过 1 天,返回:“xx小时前”,有小数点的向上取整;
-
如果超出 1 天,返回:“xx天前”,有小数点的向上取整。
测试说明
平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。 可在右侧“测试结果”区查看具体的测试集详情。
测试输入:
2012年02月02日07:11:12
2012年02月02日07:11:26
预期输出:
距离上一个时间过去了多久:刚刚
开始你的任务吧,祝你成功!
源代码:
/**
* 计算两个日期之间的间隔时间
*/
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class Test {
public static String getTime(Date d1,Date d2) {
// 请在下面的Begin-End之间编写正确的代码
/********** Begin **********/
Calendar cd1 = Calendar.getInstance();
Calendar cd2 = Calendar.getInstance();
cd1.setTime(d1);
cd2.setTime(d2);
int d = cd2.get(Calendar.DAY_OF_YEAR) - cd1.get(Calendar.DAY_OF_YEAR);
if (d < 1) {
int h = cd2.get(Calendar.HOUR_OF_DAY)
- cd1.get(Calendar.HOUR_OF_DAY);
if (h < 1) {
int m = cd2.get(Calendar.MINUTE) - cd1.get(Calendar.MINUTE);
if (m == 0) {
return "刚刚";
} else {
return m + "分钟前";
}
} else {
return h + "小时前";
}
} else {
return d + "天前";
}
/********** End **********/
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String d1 = scanner.next();
String d2 = scanner.next();
SimpleDateFormat sft = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
Date aDate = null;
Date bDate = null;
try {
aDate = sft.parse(d1);
bDate = sft.parse(d2);
} catch (ParseException e) {
e.printStackTrace();
}
System.out.print("距离上一个时间过去了多久:"+getTime(aDate,bDate));
}
}