问题描述
计算两个日期相差天数,或者某个日期与当前日期相差天数
(一)问题分析
计算两个日期的毫秒值之差,除一天的毫秒值(246060*1000),即为两个日期的天数之差
1.输入日期
(1)输入的日期为字符串型
(2)规定用户输入格式为 yyyy-MM-dd(如2002-9-12或2002-09-12)
public static void main(String[] args) throws ParseException{
String star,end;
Scanner sc = new Scanner(System.in);
System.out.println("请输入开始日期:yyyy-MM-dd");
star = sc.next();
System.out.println("请输入结束日期:yyyy-MM-dd");
end = sc.next();
2.计算相差天数
(1)实例化 SimpleDateFormat 类(可以自定义格式,但保证与用户输入格式保持一致)
(2)调用 parse 方法,把输入的日期格式转化成 Date 类格式
(3)调用getTime方法,获取日期的毫秒值
(4)毫秒值相减再除一天的毫秒值得到相差天数
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");
Date Star =sdf.parse(star);
Date End =sdf.parse(end);
long StarTime =Star.getTime();
long EndTime =End.getTime();
long E_S =EndTime-StarTime;
long interval =E_S/(24*60*60*1000);
System.out.println("相差天数为:"+interval);
3.计算与当前日期相差天数
(1)与两个日期相差天数类似
(2)结束日期替换成当前系统日期
String time;
System.out.println("请输入日期:yyyy-MM-dd");
time = sc.next();
Date Time =sdf.parse(time);
Date now =new Date();
long TimeTime =Time.getTime();
long NowTime =now.getTime();
long N_T =NowTime-TimeTime;
long interval1 =N_T/(24*60*60*1000);
System.out.println("距离今天相差天数为:"+interval1);
(二)完整代码
将上述代码整理
- 注意需要导入的包
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.Date;
import java.util.Scanner;
public class Interval {
public static void main(String[] args) throws ParseException{
String star,end;
Scanner sc = new Scanner(System.in);
System.out.println("请输入开始日期:yyyy-MM-dd");
star = sc.next();
System.out.println("请输入结束日期:yyyy-MM-dd");
end = sc.next();
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");
Date Star =sdf.parse(star);
Date End =sdf.parse(end);
long StarTime =Star.getTime();
long EndTime =End.getTime();
long E_S =EndTime-StarTime;
long interval =E_S/(24*60*60*1000);
System.out.println("相差天数为:"+interval);
String time;
System.out.println("请输入日期:yyyy-MM-dd");
time = sc.next();
Date Time =sdf.parse(time);
Date now =new Date();
long TimeTime =Time.getTime();
long NowTime =now.getTime();
long N_T =NowTime-TimeTime;
long interval1 =N_T/(24*60*60*1000);
System.out.println("距离今天相差天数为:"+interval1);
}
}