(OJ)Java常用类-日期比较

日期比较

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();
    }
}
上一篇:【STM32H7的DSP教程】第30章 STM32H7复数浮点FFT(支持单精度和双精度)


下一篇:(OJ)Java常用类-计算字符串次数