1第一種
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Test {
public static void main(String[] args) {
try {
//時間轉換類
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = sdf.parse("2014-1-10");
Date date2 = sdf.parse("2012-12-20");
//將轉換的兩個時間對象轉換成Calendard對象
Calendar can1 = Calendar.getInstance();
can1.setTime(date1);
Calendar can2 = Calendar.getInstance();
can2.setTime(date2);
//拿出兩個年份
int year1 = can1.get(Calendar.YEAR);
int year2 = can2.get(Calendar.YEAR);
//天數
int days = 0;
Calendar can = null;
//如果can1 < can2
//減去小的時間在這一年已經過了的天數
//加上大的時間已過的天數
if(can1.before(can2)){
days -= can1.get(Calendar.DAY_OF_YEAR);
days += can2.get(Calendar.DAY_OF_YEAR);
can = can1;
}else{
days -= can2.get(Calendar.DAY_OF_YEAR);
days += can1.get(Calendar.DAY_OF_YEAR);
can = can2;
}
for (int i = 0; i < Math.abs(year2-year1); i++) {
//獲取小的時間當前年的總天數
days += can.getActualMaximum(Calendar.DAY_OF_YEAR);
//再計算下一年。
can.add(Calendar.YEAR, 1);
}
System.out.println("天數差:"+days);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
Console:
天數差:386
2第二種
首先把獲取的字符串日期轉換成Date類型(從前臺頁面獲取的是字符串類型的日期 a,b):
Date a1 = new SimpleDateFormat("yyyy-MM-dd").parse(a);
Date b1 = new SimpleDateFormat("yyyy-MM-dd").parse(b);
//獲取相減後天數
long day = (a1.getTime()-b1.getTime())/(24*60*60*1000);
希望可以幫到你。
第三種
相隔的天數
Date d1 = new Date();
Date d2 = new Date(2013,10,23,14,15,26);
int days = (int)((d1.getTime() - d2.getTime())/86400000);
System.out.println("間隔天數:" + days);
第三種方式轉化的時候出了點問題 希望誰能幫我改進下,第一和第二都可以轉換 但要注意第二種時間算出的天數需要自己去區分時間的大小,否則會算出負數。