时间相减的问题?急哦~
java中两个日期相减(如 2005-03-28 14:50:23 - 2004-10-21 14:17:03)
怎么实现结果(如 1年3个月2天2小时 ) 和总的时间(如 22222小时23分12秒)
谢了~~
问题点数:50、回复次数:8Top
1 楼liutang2(Believe I Can Fly!)回复于 2005-03-28 16:55:39 得分 10
现写的,没有完全实现你的功能,可以参考
package com.ljh.date;
import java.util.Date;
import java.text.SimpleDateFormat;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2005</p>
*
* <p>Company: </p>
*
* @author liu
* @version 1.0
*/
public class DateFunction {
public DateFunction() {
}
public long fromDateStringToLong(String inVal) {
Date date = null;
SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-mm-dd hh:ss");
try {
date = inputFormat.parse(inVal);
} catch (Exception e) {
e.printStackTrace();
}
return date.getTime();
}
public String fromLongToDate(long inVal) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd hh:ss");
Date currentTime = new Date(inVal);
return sdf.format(currentTime);
}
public static void main(String[] args) {
// 2005-03-28 14:50:23 - 2004-10-21 14:17:03
DateFunction df = new DateFunction();
long startT=df.fromDateStringToLong("2005-03-03 14:51:23");
long endT=df.fromDateStringToLong("2004-03-03 13:50:23");
// long fin=df.fromDateStringToLong("1970-01-01 0:00");
// System.out.println(startT+"=="+endT+"=="+(startT-endT)+"=="+fin);
long mint=(startT-endT)/(1000);
int hor=(int)mint/3600;
int secd=(int)mint%3600;
int day=(int)hor/24;
System.out.println("共"+day+"天 准确时间是:小时="+hor+" 分钟"+secd );
}
}Top
2 楼kingfish(工作很忙,很少来csdn...)回复于 2005-03-28 17:46:42 得分 10
to 楼上:
MM和mm不一样。
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
long seconds = (df.parse(sdt1).getTime()- df.parse(sdt2).getTime())/1000;
转成秒后再换算年时分秒...Top
3 楼OnlyFor_love(『勾勾手指头 一辈子不分手』)回复于 2005-03-30 09:32:16 得分 2
路过!顶一下!
楼上方法还可以!Top
4 楼hongyan2004(spring+hibernate)回复于 2005-04-05 19:46:40 得分 2
转成秒后再换算年时分秒Top
5 楼007JavaKing(乖乖咙的咚)回复于 2005-04-05 23:34:59 得分 5
把时间换成微秒,减一次,在换算成多少天,多少小时,多少妙。就可以了
用getTime()可以得到毫秒数。
Returns the number of milliseconds since January 1, 1970, 00:00:00 GMT represented by this Date object.Top
6 楼topil(认认真真学习,塌塌实实工作)回复于 2005-04-06 16:53:14 得分 10
try{
Date dt1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse("2005-04-11 16:47:30");
Date dt2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse("2005-04-11 17:47:30");
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
long seconds = (dt1.getTime()- dt2.getTime())/1000; //相差的天数
long date = seconds/(24*60*60); //相差的天数
long hour = (seconds-date*24*60*60)/(60*60); //相差的小时数
long minut = (seconds-date*24*60*60-hour*60*60)/(60); //相差的分钟数
long second = (seconds-date*24*60*60-hour*60*60-minut*60); //相差的秒数
System.out.println(date);
System.out.println(hour);
System.out.println(minut);
System.out.println(second);
}catch(Exception e){e.printStackTrace();}
Top
7 楼cuilichen(fjfjfjfj)回复于 2005-04-06 19:10:21 得分 1
除了Date外,还可以使用Cadenlar类。Top
8 楼JOBLin(阿德)回复于 2005-04-07 10:10:03 得分 10
Calendar calendar = Calendar.getInstance();
//加减天数
calendar.add(Calendar.DAY_OF_MONTH, -3 );
Date Days = calendar.getTime();
//转换成年月日的形式
SimpleDateFormat DateTime=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String sDateTime = DateTime.format(Days);Top




