在写前端web项目时,计算酒店入住费用需要得到用户预定酒店日期差,于是自己编写了一个工具类,直接传入两个String类型的日期,可以得到相差的天、小时、分钟、秒等数据。
package com.anyiyou.travel.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author: AnYi Zhao
* @date: 2022/4/1 15:50
* @ClassName: Test
* @description: 计算日期差
*/
//1s = 1000ms 1min = 6Os 1hour = 6Omin 1day = 24hours
public class DateDifferentUtil {
public Integer dateDifferent(String dateStart, String dateStop) {
// String dateStart = "2022-04-01 12:20:43";
// String dateStop = "2022-04-08 15:57:48";
long diff,diffSeconds,diffMinutes,diffHours,diffDays = 0;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date d1 = format.parse(dateStart);//毫秒ms
Date d2 = format.parse(dateStop);//毫秒ms
diff = d2.getTime() - d1.getTime();
diffSeconds = diff / 1000 % 60;
diffMinutes = diff / (60 * 1000) % 60;
diffHours = diff / (60 * 60 * 1000) % 24;
diffDays = diff / (24 * 60 * 60 * 1000);
System.out.print("两个时间相差:");
System.out.print(diffDays + "天,");
System.out.print(diffHours + "小时,");
System.out.print(diffMinutes + "分钟,");
System.out.print(diffSeconds + "秒.");
} catch (ParseException e) {
e.printStackTrace();
}
int days = (int) diffDays;
return days;
}
}
项目实战部分代码,仅供参考
/**
* 增加
* @param orders
*/
@ResponseBody
@RequestMapping(method=RequestMethod.POST)
public Result add(@RequestBody Hotel_orders orders, HttpSession session){
//获取数量
System.out.println("id为--->"+orders.getId());
System.out.println("数量为--->"+orders.getNum());
System.out.println("入住时间为--->"+orders.getBegin());
System.out.println("离店时间为--->"+orders.getEnd());
//计算两个日期相差的天数
long diff;
int diffDays = 1;
String dateStart = orders.getBegin();
String dateStop = orders.getEnd();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
try{
Date d1 = format.parse(dateStart);
Date d2 = format.parse(dateStop);
diff = d2.getTime() - d1.getTime();
diffDays = (int) (diff/(24*60*60*1000));
} catch (ParseException e) {
e.printStackTrace();
}
User user = (User) session.getAttribute("user");
if (user == null){
return new Result(false,StatusCode.ACCESSERROR,"请登录");
}
return hotel_ordersService.add(orders,user,orders.getId(),orders.getNum(),orders.getBegin(),orders.getEnd(),diffDays);
}