日期比较
Problem Description
1.实验目的
掌握SimpleDateFormat、Date日期类用法
2.实验内容
编写程序,输入一个日期字符串,拆分成两个日期,然后比较两个日期大小,并给出两个日期相差天数
3.实验要求
请将下列代码补充完整
import java.util.*;
import java.text.SimpleDateFormat;
public class Main{
public static void main(String [] args){
Date date1,date2;
String[] time;
Scanner cin=new Scanner(System.in);
time = cin.next().split(",");
// 你的代码
Input Description
输入一个日期字符串(含两个日期),例如:2018-09-01,2019-08-01
Output Description
输出有三种情况:
1.第一个日期比第二个日期小,显示如下:
less than
334 days apart!
2.第一个日期比第二个日期大,显示如下:
greater than
220 days apart!
3.两个日期相等
equal
0 days apart!
解题代码
// 此题为代码补全题
// 创建SimpleDateFormat对象并指定格式为yyyy-MM-dd
// SimpleDateFormat对象可以将指定格式的字符串转换为Date类型对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 异常捕获 在将字符串转化成Date对象的时候可能出现异常
try {
// 将输入的第一个日期字符串转换为Date类型对象
date1 = sdf.parse(time[0]);
// 将输入的第二个日期字符串转换为Date类型对象
date2 = sdf.parse(time[1]);
// 使用Date类的compareTo方法比较两个日期的大小
// compareTo方法会返回一个int变量
// 1 代表前面的日期大于后面的日期
// 0 代表两个日期相等
// -1 代表前面的日期大于后面的日期
int i = date1.compareTo(date2);
// 天数 结果变量
long day = 0;
// 如果面的日期大于后面的日期
if (i == 1){
// 输出
System.out.println("greater than");
// getTime()方法返回的是一个从1970年到当前日期的时间戳 单位为毫秒
// 使用前面的日期的时间戳减去后边日期的时间戳
// 将时间戳代表的时间转换成天
// 1 day = 1ms / (1000 * 60 * 60 * 24)
day = ((date1.getTime() - date2.getTime()) / 1000 / 60 / 60 /24);
// 如果两个日期相等
}else if (i == 0){
System.out.println("equal");
// 如果前面的日期小于后面的日期
}else {
System.out.println("less than");
day = ((date2.getTime() - date1.getTime()) / 1000 / 60 / 60 /24);
}
// 打印相差的天数
System.out.println(day + " days apart! ");
// 异常捕获 这里捕获Exception 因为不用导包
} catch (Exception e) {
e.printStackTrace();
}
// 关闭Scanner 输入流
cin.close();
}
}