Java中如何将如何实现一个自定义日期与当前系统日期相减并等到结果?

举个例子,比如说我自定义的日期是2010年4月13日20时35分09秒,当前系统日期是2010年5月26日13时42分34秒。要算出当前系统日期的时间减去,我自定义的时间,并得出结果,结果也为yyyyMMdd hh:mm:ss的形式。请高手指教,采纳后追加分数。谢谢。
请给出代码。

//时间差如何能算出月呢???只能说是差几天几个小时多少分钟多少秒吧!!除非规定30天为一个月,365天为一年,才可以的。
我算出了差几天几个小时多少分钟多少秒,具体多少天算一个月,自己添加吧。

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
* @author ww
*
*/
public class DateSub {

/**
*
* @param args
* @throws ParseException
*/
public static void main(String[] args) throws ParseException {
// TODO Auto-generated method stub
String date = "2010-4-13 20:35:09";
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

System.out.println(subSystemTime(df.parse(date)));
}

/**
* 一个自定义日期与当前系统日期相减
*
* @param date 自定义日期
* @return
*/
public static String subSystemTime(Date date){
StringBuilder sb = new StringBuilder();

long year,month,day,hour,minute,second;

long milliSecondSub = date.getTime()-System.currentTimeMillis();

if(milliSecondSub<0){
milliSecondSub = -milliSecondSub;
sb.append("-");
}

second = milliSecondSub/1000%60;
minute = milliSecondSub/1000/60%60;
hour = milliSecondSub/1000/60/60%24;
day = milliSecondSub/1000/60/60/24;

sb.append(day).append("天").append(hour).append("小时").append(minute).append("分钟").append(second).append("秒");

return sb.toString();
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-08-09
将自定义日期和当前日期都转换成Date对象,然后用getTimes()获取毫秒数,用毫秒数做运算,可以算出两者的毫秒差
第2个回答  2010-05-26
//拿去参考吧,只能算出相差几天几小时几分钟几秒,差几个月就不好算了

import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {
// 一天的毫秒数 60*60*1000*24
private final static long DAY_MILLIS = 86400000;

// 一小时的毫秒数 60*60*1000
private final static long HOUR_MILLIS = 3600000;

// 一分钟的毫秒数 60*1000
private final static long MINUTE_MILLIS = 60000;

//日期格式化串
private final static SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

public static void main(String[] args) throws Exception{
// 开始时间
Date startdate = DATE_FORMAT.parse("2010-01-01 08:01:00");
// 结束时间
Date enddate = DATE_FORMAT.parse("2010-01-03 00:00:00");

showTimedif(startdate, enddate);
}

public static void showTimedif(Date start, Date end) {
show(start.getTime(),end.getTime());
}

/**
* 计算两个日期相差的天、小时、分钟
*
* @param start
* @param end
*/
public static void show(long start, long end) {
long temp = end - start;
System.out.print(DATE_FORMAT.format(new Date(start)) + " 与 " + DATE_FORMAT.format(new Date(end)));
System.out.println("相差" + temp / DAY_MILLIS + "天" +
(temp % DAY_MILLIS)/ HOUR_MILLIS + "小时" +
((temp % DAY_MILLIS) % HOUR_MILLIS)/ MINUTE_MILLIS + "分"+
((temp % DAY_MILLIS) % HOUR_MILLIS)% MINUTE_MILLIS/1000+"秒");
}
}
第3个回答  2010-05-26
先定义
java.text.SimpleDateFormat sdf1 = new java.text.SimpleDateFormat("yyyyMMdd hh:mm:ss");
Data sysdate = new java.util.Date();
Date date;
Date youdate;
youdate = "20100113 203509";
date = sdf1.format(sysdate - sdf1.parse(youdate))
这个date就是你要的时间
第4个回答  2015-07-30
DATE类型里面有方法