(1)用户输入2个日期,第一个日期用整数形式输入,把输入的整数设置为日历对象1的年月日的值。第二个日期以字符串形式输入,形如“2022-10-25”,并设置为日历对象2的年月日的值。将2个日期以“xx年xx月xx日”的格式输出。
(2)程序判断并输出第二个日期表示的时间是该年度第几周、第几天;
(3)判断并输出2个日期的大小关系,以及2个日期之间的间隔天数。
源代码:
CompareDate:
package com.UtilityClass;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.logging.SimpleFormatter;
public class CompareDate {
public static void main(String[] args) throws ParseException {
Scanner scanner = new Scanner(System.in);
System.out.println("输入第一个年,月,日数据");
System.out.print("输入年份:");
short yearOne = scanner.nextShort();
System.out.print("输入月份:");
byte monthOne = scanner.nextByte();
System.out.print("输入日期:");
byte dayOne = scanner.nextByte();
System.out.println("第一年日期为:"+yearOne+"年"+monthOne+"月"+dayOne+"日");
System.out.print("输入第二个年,月,日数据:");
//接收键盘输入的string类型的时间格式
String x= scanner.next();
//将字符串转为Date类型,格式不能乱写,要和字符串输入格式一致
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//将数据格式传入到datetime中
Date date2 = sdf.parse(x);
//指定日期以相应字符串输出格式
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd");
String datetime2 = sdf2.format(date2);
System.out.println("第二年日期为:"+datetime2);
//实例化日历对象
Calendar calendar = Calendar.getInstance();
//将第一个输入的日期转为日期
calendar.set(yearOne,monthOne-1,dayOne);
//将日期转为date对象
//将日期转为date对象,此时是有小时,分钟的
Date date1= calendar.getTime();
//将date数据按string类型保存,只保存年,月,日
String date=sdf.format(date1);
//将string类型变为date类型
Date date3 = sdf.parse(date);
//将星期一设为一个星期的第一天
calendar.setFirstDayOfWeek(2);
//将第二个日期转化为日历对象中
calendar.setTime(date2);
System.out.println(datetime2+"是该年的第"+calendar.get(Calendar.WEEK_OF_YEAR)+"周");//获取是一年中的第几周
System.out.println(datetime2+"是该年的第"+calendar.get(Calendar.DAY_OF_YEAR)+"天");//获取是一年中的第几天
if (date3.compareTo(date2)==0)
System.out.println("两个日期的年、月、日完全相同,是同一天");
else if (date3.compareTo(date2)>0){
System.out.println("您输入的第一个日期大于第二个日期");
long d= (date3.getTime() - date2.getTime()) / (1000 * 60 * 60 * 24);
System.out.println(yearOne+"年"+monthOne+"月"+dayOne+"日与"+datetime2+"相隔"+d+"天");
}
else if (date3.compareTo(date2)<0) {
System.out.println("您输入的第一个日期小于第二个日期");
long d= (date2.getTime() - date3.getTime()) / (1000 * 60 * 60 * 24);
System.out.println(yearOne + "年" + monthOne + "月" + dayOne + "日与" + datetime2 + "相隔" + d + "天");
}
}
}
实验运行截图: