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";//不可预订