java 時間計算 格式化的相關記錄(後續)
阿新 • • 發佈:2019-02-10
1.
String start="8:00:00";
SimpleDateFormat df=new SimpleDateFormat("HH:mm:ss");
System.out.println(df.parse(start));
得到的是1970年的: Thu Jan 01 08:00:00 CST 1970
2.
計算相同格式的兩個時間的時間差 :如07:38-00:41,結果以XX小時XX分鐘形式輸出
private double countOverTime(String endtime,String starttime) throws ParseException{
SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
Date end=df.parse(endtime);
Date start=df.parse(starttime);
long result=(long)(end.getTime()-start.getTime())/1000;
long hour=result%(24*3600)/3600;
long min=result%3600/60;
return hour+"小時"+min+"分鐘";
}
3.
如果給你一個時間如orderMinTime="10:15",orderMaxTime="23:30"分別計算和當前時間的時間差,
(要注意不要使用1.的方法格式化,原因如1.)
正確做法如下:
String[] mintimes=orderMinTime.split(":");
String[] maxtimes=orderMaxTime.split(":");
Calendar ca=Calendar.getInstance();
ca.set(Calendar.HOUR_OF_DAY, Integer.parseInt(mintimes[0]));
ca.set(Calendar.MINUTE, Integer.parseInt(mintimes[1]));
long min=ca.getTime().getTime();
ca.set(Calendar.HOUR_OF_DAY, Integer.parseInt(maxtimes[0]));
ca.set(Calendar.MINUTE, Integer.parseInt(maxtimes[1]));
long max=ca.getTime().getTime();
long bookTime=new Date().getTime();//預定時間定義為當前時間
if(bookTime>=min&&bookTime<=max) bookStatus="1";//可預訂
else bookStatus="0";//不可預訂