天天看点

计算两个时间的差值

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.example.demo.entity.CarInfos;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
* 计算两个时间的差值
*/
@RestController
public class TimeValueContoller {

@PostMapping(value = "timeMethodOfHous")
public Double timeMethodOfHous(String beginTime, String endTime) {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date beginDate;
Date endDate;
long day = 0;
long hour = 0;
long min = 0;
long sec = 0;
try {
beginDate = dateFormat.parse(beginTime);
endDate = dateFormat.parse(endTime);
long beginDateTime = beginDate.getTime();
long endDateTime = endDate.getTime();
long diffrentTime;
if (beginDateTime < endDateTime) {
diffrentTime = endDateTime - beginDateTime;
            } else {
diffrentTime = beginDateTime - endDateTime;
            }
day = diffrentTime / (24 * 60 * 60 * 1000);
hour = (diffrentTime / (60 * 60 * 1000) - day * 24);
min = ((diffrentTime / (60 * 1000)) - day * 24 * 60 - hour * 60);
sec = (diffrentTime / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
        } catch (ParseException e) {
e.printStackTrace();
        }
//类型转换
Double distanceDay = Double.parseDouble(String.valueOf(day));
Double distanceHour = Double.parseDouble(String.valueOf(hour));
Double distancemin = Double.parseDouble(String.valueOf(min));
Double distancesec = Double.parseDouble(String.valueOf(sec));
Double distance = (24 * distanceDay) + distanceHour + (distancemin / 60) + (distancesec / 360);   //一共多少小时
//按照小时划分(不足一次按一次计算,例如2.4则按3计算)
double ceil = Math.ceil(distance / 72);
return distance;
    }

/**
* 两个时间相差距离多少天多少小时多少分多少秒
*
* @param beginTime 时间参数 1 格式:1990-01-01 12:00:00
* @param endTime   时间参数 2 格式:2009-01-01 12:00:00
* @return String 返回值为:xx天xx小时xx分xx秒
*/
public static String timeMethod(String beginTime, String endTime) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date one;
Date two;
long day = 0;
long hour = 0;
long min = 0;
long sec = 0;
try {
one = df.parse(beginTime);
two = df.parse(endTime);
long time1 = one.getTime();
long time2 = two.getTime();
long diff;
if (time1 < time2) {
diff = time2 - time1;
            } else {
diff = time1 - time2;
            }
day = diff / (24 * 60 * 60 * 1000);
hour = (diff / (60 * 60 * 1000) - day * 24);
min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);
sec = (diff / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
        } catch (ParseException e) {
e.printStackTrace();
        }
return day + "天" + hour + "小时" + min + "分" + sec + "秒";
    }

/**
* 两个时间相差距离多少天多少小时多少分多少秒
*
* @param starttime 时间参数 1 格式:1990-01-01 12:00:00
* @param endtime   时间参数 2 格式:2009-01-01 12:00:00
* @return long[] 返回值为:{天, 时, 分, 秒}
*/
public static long[] getDistanceTimes(String starttime, String endtime) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date one;
Date two;
long day = 0;
long hour = 0;
long min = 0;
long sec = 0;
try {
one = df.parse(starttime);
two = df.parse(endtime);
long time1 = one.getTime();
long time2 = two.getTime();
long diff;
if (time1 < time2) {
diff = time2 - time1;
            } else {
diff = time1 - time2;
            }
day = diff / (24 * 60 * 60 * 1000);
hour = (diff / (60 * 60 * 1000) - day * 24);
min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);
sec = (diff / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
        } catch (ParseException e) {
e.printStackTrace();
        }
long[] times = {day, hour, min, sec};
return times;
    }

/**
* 两个时间之间相差距离多少天
*
* @param starttime 时间参数 1:
* @param endtime   时间参数 2:
* @return 相差天数
*/
public static long getDistanceDays(String starttime, String endtime) throws Exception {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date one;
Date two;
long days = 0;
try {
one = df.parse(starttime);
two = df.parse(endtime);
long time1 = one.getTime();
long time2 = two.getTime();
long diff;
if (time1 < time2) {
diff = time2 - time1;
            } else {
diff = time1 - time2;
            }
days = diff / (1000 * 60 * 60 * 24);
        } catch (ParseException e) {
e.printStackTrace();
        }
return days;//返回相差多少天
    }

}