java中用来计算时差的叫什么 JAVA新手,计算两个时间差
各位老铁们,大家好,今天由我来为大家分享java中用来计算时差的叫什么,以及JAVA新手,计算两个时间差的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
java 获取当前时间并求和某个给定时间的时间差
框架你得自己设计.
技术告诉你一些.
即时时间使用Date类或Calendar类,new Date()或Calendar.getInstance()得到本地即时时间.
和某时间相比,如果给定年月日小时分秒之一或组合,则按Calendar.set处理,如果给定基准时间差1970-1-1 0:00:00则Calendar和Date都有设置方法.
总之,多看看API文档,问问师兄们.很简单的.
补充一点,Date原来很多构造函数和方法的,现在都过期了.
java如何计算工作日之间的时间差
packagecom.wednesday.tools.timetools;
importjava.text.ParseException;
importjava.text.SimpleDateFormat;
importjava.util.Calendar;
importjava.util.Date;
publicclassGetWorkDayTimeMillisecond{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
GetWorkDayTimeMilliseconda=newGetWorkDayTimeMillisecond();
Longb=a.getWorkdayTimeInMillis("2010-05-178-00-00","2010-05-189-00-00","yyyy-MM-ddHH-mm-ss");
System.out.println(b);
}
/**
*获取两个时间之内的工作日时间(只去掉两个日期之间的周末时间,法定节假日未去掉)
*@paramstart-起始时间,共有3个重载方法,可以传入long型,Long型,与Date型
*@paramend-结束时间,共有3个重载方法,可以传入long型,Long型,与Date型
*@returnLong型时间差对象
*/
publicLonggetWorkdayTimeInMillis(longstart,longend){
//如果起始时间大于结束时间,将二者交换
if(start>end){
longtemp=start;
start=end;
end=temp;
}
//根据参数获取起始时间与结束时间的日历类型对象
Calendarsdate=Calendar.getInstance();
Calendaredate=Calendar.getInstance();
sdate.setTimeInMillis(start);
edate.setTimeInMillis(end);
//如果两个时间在同一周并且都不是周末日期,则直接返回时间差,增加执行效率
if(sdate.get(Calendar.YEAR)==edate.get(Calendar.YEAR)
&&sdate.get(Calendar.WEEK_OF_YEAR)==edate.get(Calendar.WEEK_OF_YEAR)
&&sdate.get(Calendar.DAY_OF_WEEK)!=1&&sdate.get(Calendar.DAY_OF_WEEK)!=7
&&edate.get(Calendar.DAY_OF_WEEK)!=1&&edate.get(Calendar.DAY_OF_WEEK)!=7){
returnnewLong(end-start);
}
//首先取得起始日期与结束日期的下个周一的日期
CalendarsnextM=getNextMonday(sdate);
CalendarenextM=getNextMonday(edate);
//获取这两个周一之间的实际天数
intdays=getDaysBetween(snextM,enextM);
//获取这两个周一之间的工作日数(两个周一之间的天数肯定能被7整除,并且工作日数量占其中的5/7)
intworkdays=days/7*5;
//获取开始时间的偏移量
longscharge=0;
if(sdate.get(Calendar.DAY_OF_WEEK)!=1&&sdate.get(Calendar.DAY_OF_WEEK)!=7){
//只有在开始时间为非周末的时候才计算偏移量
scharge+=(7-sdate.get(Calendar.DAY_OF_WEEK))*24*3600000;
scharge-=sdate.get(Calendar.HOUR_OF_DAY)*3600000;
scharge-=sdate.get(Calendar.MINUTE)*60000;
scharge-=sdate.get(Calendar.SECOND)*1000;
scharge-=sdate.get(Calendar.MILLISECOND);
}
//获取结束时间的偏移量
longecharge=0;
if(edate.get(Calendar.DAY_OF_WEEK)!=1&&edate.get(Calendar.DAY_OF_WEEK)!=7){
//只有在结束时间为非周末的时候才计算偏移量
echarge+=(7-edate.get(Calendar.DAY_OF_WEEK))*24*3600000;
echarge-=edate.get(Calendar.HOUR_OF_DAY)*3600000;
echarge-=edate.get(Calendar.MINUTE)*60000;
echarge-=edate.get(Calendar.SECOND)*1000;
echarge-=edate.get(Calendar.MILLISECOND);
}
//计算最终结果,具体为:workdays加上开始时间的时间偏移量,减去结束时间的时间偏移量
returnworkdays*24*3600000+scharge-echarge;
}
publicLonggetWorkdayTimeInMillis(Longstart,Longend){
returngetWorkdayTimeInMillis(start.longValue(),end.longValue());
}
publicLonggetWorkdayTimeInMillis(Datestart,Dateend){
returngetWorkdayTimeInMillis(start.getTime(),end.getTime());
}
publicLonggetWorkdayTimeInMillis(Stringstart,Stringend,Stringformat){
SimpleDateFormatsdf=newSimpleDateFormat(format);
Datesdate;
Dateedate;
try{
sdate=sdf.parse(start);
edate=sdf.parse(end);
returngetWorkdayTimeInMillis(sdate,edate);
}catch(ParseExceptione){
e.printStackTrace();
returnnewLong(0);
}
}
privateCalendargetNextMonday(Calendarcal){
intaddnum=9-cal.get(Calendar.DAY_OF_WEEK);
if(addnum==8)addnum=1;//周日的情况
cal.add(Calendar.DATE,addnum);
returncal;
}
/**
*获取两个日期之间的实际天数,支持跨年
*/
publicintgetDaysBetween(Calendarstart,Calendarend){
if(start.after(end)){
Calendarswap=start;
start=end;
end=swap;
}
intdays=end.get(Calendar.DAY_OF_YEAR)-start.get(Calendar.DAY_OF_YEAR);
inty2=end.get(Calendar.YEAR);
if(start.get(Calendar.YEAR)!=y2){
start=(Calendar)start.clone();
do{
days+=start.getActualMaximum(Calendar.DAY_OF_YEAR);
start.add(Calendar.YEAR,1);
}while(start.get(Calendar.YEAR)!=y2);
}
returndays;
}
}
JAVA新手,计算两个时间差
我的思路:在java里面任何完整的日期都可以转化成毫秒,
然后利用毫秒之差就可以算出这2个日期的差额,
但题目里面没有天,只有时分秒,
所以我们可以分别在时分秒加上年月日,使之组成一个完整的日期就可以进行计算了。
以下是我的代码,可以直接拷贝在Eclipse里运行。
p.s:你的代码我看了,没有什么问题,可能是在网站里面运行,你不应该有main函数之类的东西吧,应该用servlet啊。
packagecom.testtimeinterval;
importjava.io.BufferedReader;
importjava.io.InputStreamReader;
importjava.text.SimpleDateFormat;
importjava.util.Date;
publicclassTestTimeInterval{
publicstaticvoidmain(String[]args){
try{
//得到系统输入的内容
System.out.println("请输入入睡时刻,用:隔开:");
InputStreamReaderisr_begin=newInputStreamReader(System.in);
BufferedReaderbr_begin=newBufferedReader(isr_begin);
StringbeginInputValue=br_begin.readLine();
System.out.println("入睡时间为:"+beginInputValue);
System.out.println("请输入起床时刻,用:隔开:");
InputStreamReaderisr_end=newInputStreamReader(System.in);
BufferedReaderbr_end=newBufferedReader(isr_end);
StringwakeupInputValue=br_end.readLine();
System.out.println("起床时间为:"+wakeupInputValue);
//1.将入睡时间拼接成一个完整的日期
StringsleepTimeStr=getCurrDay()+""+beginInputValue;
//1.1转换成日期格式
DatesleepTime=convertStrToDate(sleepTimeStr);
//2.将起床时间拼接成一个完整的日期
StringwakeupTimeStr=getCurrDay()+""+wakeupInputValue;
//2.1转换成日期格式
DatewakeupTime=convertStrToDate(wakeupTimeStr);
//计算2个日期之差
longinterval=wakeupTime.getTime()-sleepTime.getTime();
System.out.println("相差的毫秒是:"+interval);
//3.将long转化成时分秒
//3.1先得到时
inthour=newLong(interval/(1000*60*60)).intValue();
//3.2再得到分
inttempLeft_minute=newLong(interval%(1000*60*60))
.intValue();
//3.2.1得到分
intminute=newLong(tempLeft_minute/(1000*60)).intValue();
//4.1得到秒
inttempLeft_second=newLong(tempLeft_minute%(1000*60))
.intValue();
//4.2.1得到分
intsecond=newLong(tempLeft_second/1000).intValue();
System.out.println("睡觉的时间为"+hour+"时,"+minute+"分,"+second
+"秒");
}catch(Exceptione){
e.printStackTrace();
}
}
privatestaticStringgetCurrDay()throwsException{
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");
returnsdf.format(newDate());
}
privatestaticDateconvertStrToDate(StringdateStr)throwsException{
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");
returnsdf.parse(dateStr);
}
}
END,本文到此结束,如果可以帮助到大家,还望关注本站哦!