天天看點

計算兩個時間的內插補點

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;//傳回相差多少天
    }

}