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();
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);
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯