当前位置:编程学习 > JAVA >>

【求助】如何计算时间差?

我现在想计算小时的时差,有没有什么好办法
我的需求是这样的
开始时间1971-01-01 03:00:00
结束时间1971-01-01 19:00:00
当期时间:new Date();出来的..

比如当前时间是14点.则离开始时间为11h,离结束时间为5h

我想计算出当前时间离开始时间和结束时间的时差..怎么算?
时差结果以小时为单位 --------------------编程问答-------------------- 楼主参考一下:


import java.util.Calendar;
import java.util.Date;

public class TimeInterval {
static final int BEGINHOUR = 3;//小时的起始时间
static final int ENDHOUR = 19;//结束时间

public static void main(String[] args) {
Date nowDate = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(nowDate);
int nowHour = cal.get(Calendar.HOUR_OF_DAY);//得到当前时间的24小时表示的小时数。

int beginInterval = nowHour - BEGINHOUR;
int endInterval = ENDHOUR- nowHour;

System.out.println("beginInterval is " + beginInterval);
System.out.println("endInterval is " + endInterval);

}
}
--------------------编程问答-------------------- 楼上正解,我是来混点分的 --------------------编程问答-------------------- 转为milliseconds想减来比较,换算

public static void main(String args[]) {
    Calendar startTime = Calendar.getInstance();
    startTime.set(1971, 0, 1, 03, 00, 00);

    Calendar endTime = Calendar.getInstance();
    endTime.set(1971, 0, 1, 19, 00, 00);

    Date now = new Date();

    // 通过milliseconds 想减来比较,再将时间差换算为小时
    double disStartTime = (double)(now.getTime() - startTime.getTimeInMillis())/(1000*60*60);
    double disEndTime = (double)(now.getTime() - endTime.getTimeInMillis())/(1000*60*60);

    System.out.println("disStartTime " + disStartTime);
    System.out.println("disEndTime " + disEndTime);
}
--------------------编程问答-------------------- 前面几位说的楼主参考吧,这里说下Calendar这个类有很多实用的方法可以灵活获取任何时间点的,
跟Date转换也很方便,楼主重点看看。 --------------------编程问答-------------------- 给你推荐一个time的小框架,joda-time,很容易解决时间上几乎所有的问题,包括你这个~去学学吧
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,