最近碰到一个比较难解决的问题,时间段的判断。原问题是:停车场计费,字段 inTime(DATE)入场时间,outTime(DATE)出场时间。需要判断入场时间和出场时间是否在一个时间段内,如果在的话,直接进行收费,如果不在同一个时间段,分别收费然后价格相加。
判断入场时间和出场时间是不是在同一个时间段,是这个问题的重点和难点。
java里面Date类型的数据,在应用上是一个长整型数,直接用这个Date型数据来进行判断应该是不行的。需要用到其他类型数据进行转换。网上各种资料查询,java里提供了有Calendar类来提供有关日期日历的计算。有了具体的小时和分钟数据,就可以针对问题的判断时间来编程了。
class MyTime{
private int hour;
private int minute;
public MyTime(Date date){
Calendar c = Calendar.getInstance();
c.setTime(date); //用setTime方法来得到Date类对象对应的Calendar数据
hour = c.get(Calendar.HOUR_OF_DAY); //用Calendar类的get方法来得到具体的小时数
minute = c.get(Calendar.MINUTE); //get里面参数的不同,得到的数据也不同
}
}
Calendar类的用法,不是new一个对象,而是Calendar c = Calendar.getInstance();这样的用法,这是因为,Calendar是一个抽象类,从下面的定义里可以看到。
public abstract class Calendar
extends Object
implements Serializable, Cloneable, Comparable<Calendar>
Calendar里面提供了得到一个Calendar类对象的方法,就是getInstance(),这个方法的返回值就是一个Calendar对象。
static Calendar getInstance()
Gets a calendar using the default time zone and locale.