这里介绍java中两个Date日期对象的时间差值,分别计算它们的小时差,天数差,分钟差。这里保留2位小数的方式来实现。
以下都是可以直接运行的代码。
计算天数差 day
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.text.DecimalFormat;
import java.util.Date;
public class DateDiffDay {
public static void main(String args[]) throws ParseException {
String timeStr1 = "2023-01-02 13:39:59";
String timeStr2 = "2023-01-04 22:30:11";
Date date1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(timeStr1);
Date date2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(timeStr2);
//计算天数差
DecimalFormat decimalFormat = new DecimalFormat("0.00");//保留2位小数
long time1 = date1.getTime();
long time2 = date2.getTime();
//需要转为double
String days = decimalFormat.format(
((double)time2 - (double) time1) / (1000 * 60 * 60 * 24)
);
System.out.println(days);
}
}
输出:
2.37
计算小时差 hour
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.text.DecimalFormat;
import java.util.Date;
public class DateDiffHour {
public static void main(String args[]) throws ParseException {
String timeStr1 = "2023-01-03 13:39:59";
String timeStr2 = "2023-01-03 22:30:11";
Date date1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(timeStr1);
Date date2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(timeStr2);
//计算小时差
DecimalFormat decimalFormat = new DecimalFormat("0.00");//保留2位小数
long time1 = date1.getTime();
long time2 = date2.getTime();
//需要转为double
String hours = decimalFormat.format(
((double)time2 - (double) time1) / (1000 * 60 * 60)
);
System.out.println(hours);
}
}
输出:
8.84
计算分钟差
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.text.DecimalFormat;
import java.util.Date;
public class DateDiffMin {
public static void main(String args[]) throws ParseException {
String timeStr1 = "2023-01-02 19:39:59";
String timeStr2 = "2023-01-02 22:30:11";
Date date1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(timeStr1);
Date date2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(timeStr2);
//计算分钟差
DecimalFormat decimalFormat = new
DecimalFormat("0.00");//保留2位小数
long time1 = date1.getTime();
long time2 = date2.getTime();
//需要转为double
String minutes = decimalFormat.format(
((double)time2 - (double) time1) / (1000 * 60)
);
System.out.println(minutes );
}
}
输出:170.20