永发信息网

java怎样通过两个时间求时间差

答案:2  悬赏:20  手机版
解决时间 2021-02-10 11:27
  • 提问者网友:最爱你的唇
  • 2021-02-09 10:34
java怎样通过两个时间求时间差
最佳答案
  • 五星知识达人网友:行雁书
  • 2021-02-09 11:29
java中Date时间可以用getTime()来获得1970年1月1日到当前时间的毫秒数,所以可以这样来计算得出两个时间的秒数:

try {

Date a = new Date();

Thread.sleep(3000);

Date b = new Date();

long interval = (b.getTime() - a.getTime())/1000;

System.out.println("两个时间相差"+interval+"秒");//会打印出相差3秒

} catch (InterruptedException e) {

e.printStackTrace();
全部回答
  • 1楼网友:轮獄道
  • 2021-02-09 12:43
我的思路:在java里面任何完整的日期都可以转化成毫秒, 然后利用毫秒之差就可以算出这2个日期的差额, 但题目里面没有天,只有时分秒, 所以我们可以分别在时分秒加上年月日,使之组成一个完整的日期就可以进行计算了。 以下是我的代码,可以直接拷贝在eclipse里运行。 p.s:你的代码我看了,没有什么问题,可能是在网站里面运行,你不应该有main函数之类的东西吧,应该用servlet啊。 package com.testtimeinterval; import java.io.bufferedreader; import java.io.inputstreamreader; import java.text.simpledateformat; import java.util.date; public class testtimeinterval { public static void main(string[] args) { try { // 得到系统输入的内容 system.out.println("请输入入睡时刻,用:隔开:"); inputstreamreader isr_begin = new inputstreamreader(system.in); bufferedreader br_begin = new bufferedreader(isr_begin); string begininputvalue = br_begin.readline(); system.out.println("入睡时间为:" + begininputvalue); system.out.println("请输入起床时刻,用:隔开:"); inputstreamreader isr_end = new inputstreamreader(system.in); bufferedreader br_end = new bufferedreader(isr_end); string wakeupinputvalue = br_end.readline(); system.out.println("起床时间为:" + wakeupinputvalue); // 1.将入睡时间拼接成一个完整的日期 string sleeptimestr = getcurrday() + " " + begininputvalue; // 1.1转换成日期格式 date sleeptime = convertstrtodate(sleeptimestr); // 2.将起床时间拼接成一个完整的日期 string wakeuptimestr = getcurrday() + " " + wakeupinputvalue; // 2.1转换成日期格式 date wakeuptime = convertstrtodate(wakeuptimestr); // 计算2个日期之差 long interval = wakeuptime.gettime() - sleeptime.gettime(); system.out.println("相差的毫秒是:" + interval); // 3.将long转化成时分秒 // 3.1先得到时 int hour = new long(interval / (1000 * 60 * 60)).intvalue(); // 3.2再得到分 int templeft_minute = new long(interval % (1000 * 60 * 60)) .intvalue(); // 3.2.1 得到分 int minute = new long(templeft_minute / (1000 * 60)).intvalue(); // 4.1 得到秒 int templeft_second = new long(templeft_minute % (1000 * 60)) .intvalue(); // 4.2.1 得到分 int second = new long(templeft_second / 1000).intvalue(); system.out.println("睡觉的时间为" + hour + "时," + minute + "分," + second + "秒"); } catch (exception e) { e.printstacktrace(); } } private static string getcurrday() throws exception { simpledateformat sdf = new simpledateformat("yyyy-mm-dd"); return sdf.format(new date()); } private static date convertstrtodate(string datestr) throws exception { simpledateformat sdf = new simpledateformat("yyyy-mm-dd hh:mm:ss"); return sdf.parse(datestr); } }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯