题目;
.编写程序,让用户从输入对话框(JOptionPane. showInputDialog()方法)按yyyy
文章目录
分析(以JDK8.0之前的Date为例)
First:日期的解析:文本–>日期;
总体上需要使用到日期的解析:文本–>日期;
从键盘输入格式要求的字符串,然后调用parse(string source)解析出一个Date对象的日期;
如下:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = sdf.parse(message);
String message = JOptionPane.showInputDialog("请按照yyyy-MM-dd输入第一个日期");
Secend:解决用户日期格式输入的不对问题
字符串转换日期的问题解决了,接下来就是如何解决处理用户日期格式输入的不对问题
因为:Date date1 = sdf.parse(message);
会在用户输入的日期格式不对时抛出异常ParseException
:所以我们可以在catch块中处理问题;再加一个while循环直到用户输入的日期格式对了之后,才向下进行
如下:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String message;
Date date1 = null, date2 = null;
boolean sign = true;
message = JOptionPane.showInputDialog("请按照yyyy-MM-dd输入第一个日期");
while (sign) {
try {
date1 = sdf.parse(message);
sign = false;
} catch (ParseException e) {
message = JOptionPane.showInputDialog("刚刚输入格式错误,请按照yyyy-MM-dd输入第一个日期");
}
}
日期二的输入与输出也一样处理;
Three:比较大小
采用时间戳比较大小:
调用日期的getTime()来获取时间戳:
如果date1的时间戳大于date2的时间戳说明:date1的日期晚
反之反过来
if (date1.getTime() - date2.getTime() > 0) {
System.out.print("date2(日期二)比date1(日期一)早"+" ");
} else {
System.out.print("date1(日期一)比date2(日期二)早"+" ");
}
Four:求出两个日期间的天数差:
同样采用时间戳,调用日期的getTime()来获取时间戳:
应为我们的日期格式为yyyy-MM-dd没有指明具体时间:默认为00:00:00
所以不需要在后面加一了:如下:
int long=Math.abs((((date2.getTime() - date1.getTime()) / 1000 / 60 / 60 / 24)))
最终代码实现
import javax.swing.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDate {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String message;
Date date1 = null, date2 = null;
boolean sign = true;
message = JOptionPane.showInputDialog("请按照yyyy-MM-dd输入第一个日期");
while (sign) {
try {
date1 = sdf.parse(message);
sign = false;
} catch (ParseException e) {
message = JOptionPane.showInputDialog("刚刚输入格式错误,请按照yyyy-MM-dd输入第一个日期");
}
}
String message1;
message1 = JOptionPane.showInputDialog("请按照yyyy-MM-dd输入第二个日期");
sign = true;
while (sign) {
try {
date2 = sdf.parse(message1);
sign = false;
} catch (ParseException e) {
message1 = JOptionPane.showInputDialog("刚刚输入格式错误,请按照yyyy-MM-dd输入第二个日期");
}
}
if (date1.getTime() - date2.getTime() > 0) {
System.out.println("date2(日期二)比date1(日期一)早" + "二者相隔天数为:" + Math.abs((((date2.getTime() - date1.getTime()) / 1000 / 60 / 60 / 24))));
} else {
System.out.println("date1(日期一)比date2(日期二)早"+ "二者相隔天数为:" + Math.abs((((date2.getTime() - date1.getTime()) / 1000 / 60 / 60 / 24))));
}
}
}