对已日期相减,最高效的做法就是将二者都转换成毫秒,相减之后再根据你的需求进行单位转换,比如你想显示相差的秒数,就除以1000,以此类推,翠花,上代码:/* 随便选两个时间 */ String d1 = "2015-04-17"; String d2 = "2015-06-17"; /* 先转成毫秒并求差 */ SimpleDateF...
java 两个日期相减的怎么做?
对已日期相减,最高效的做法就是将二者都转换成毫秒,相减之后再根据你的需求进行单位转换,比如你想显示相差的秒数,就除以1000,以此类推,翠花,上代码:
/* 随便选两个时间 */ String d1 = "2015-04-17"; String d2 = "2015-06-17"; /* 先转成毫秒并求差 */ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); long m = sdf.parse(d2).getTime() - sdf.parse(d1).getTime(); /* 根据你的需求进行单位转换 */ System.out.println("相差毫秒数:"+ m ); System.out.println("相差天数:"+ ( m / (1000 * 60 * 60 * 24) ) );要注意的地方:
时间格式可能有很多种,比如20150611或者2015年6月11日等等。所以你需要以对应的方式来初始化SimpleDateFormat对象。
例如20150611,就要写成:
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");SimpleDateFormat类是非线程安全的,所以在高并发下需要加同步锁,否则会出现灵异事件。
2015-06-17
给你提供一个思路。
两个日期转化为毫秒相减,相减后的毫秒转化为天数(因为日期-日期=天数)
比如date是个Date型 long time1=date.getTime()(将日期转成毫秒数),另一个也转成毫秒数相减,后面就是把相减得到的毫秒数换成天数就可以了。2012-05-31
import java.util.*;
public class DateSubtract {
public static void main(String[] args) {
Calendar nowDate=Calendar.getInstance(),oldDate=Calendar.getInstance();
nowDate.setTime(new Date());//设置为当前系统时间
oldDate.set(1990, 5, 19);//设置为1990年(6)月29日
long timeNow=nowDate.getTimeInMillis();
long timeOld=oldDate.getTimeInMillis();
long 相隔天数=(timeNow-timeOld)/(1000*60*60*24);//化为天
System.out.println("相隔"+相隔天数+"天");
}
}2012-05-31
你可以先把日期类型转换成毫秒(Long类型),让后在运算!2012-06-01