在sql server中,可以用datediff()函数,取得两个时间的差异,但在JAVA中,有个Calendar类,好像没有这样的函数,是吗?
那个compareTo方法,也只能取得“-1、0、1”这三个值。
现在要写个公司职员出勤的模块,我想取得职员到达的时间之后,对比上班时间的差异(例如迟到了多少小时、多少分钟),应该如何写呢?

解决方案 »

  1.   

    Calendar
    public long getTimeInMillis()返回此 Calendar 的时间值,以毫秒为单位。 
      

  2.   

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.*;
    public class Snippet
    {
    public static void main(String[] args) throws Exception
    {
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date now = df.parse("2011-03-24 08:30:40");
    Date date = df.parse("2011-03-23 07:25:24");
    long l = now.getTime() - date.getTime();
    long day = l / (24 * 60 * 60 * 1000);
    long hour = (l / (60 * 60 * 1000) - day * 24);
    long min = ((l / (60 * 1000)) - day * 24 * 60 - hour * 60);
    long s = (l / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
    System.out.println("相差时间为: " + day + "天" + hour + "小时" + min + "分" + s + "秒"); }}
      

  3.   

    二楼  开眼界了  Date now = df.parse("2011-03-24 08:30:40");
    这句我还真没用过  hehe
      

  4.   

    看来JAVA是没有sql server的datediff的那种方法的了。
    其实用Calendar类的getTimeInMillis应该是比较“正路”的方法。还有除以1000,应该是在两个时间相减之后就操作了,下面就不用每个值都要除以1000了。
    非常感谢。