1. 程式人生 > >java7 計算日期相隔天數的最優方法

java7 計算日期相隔天數的最優方法

環境

jdk : 1.7

因為java8中官網已經有封裝好的方法,所以我這個方法適用於java8之前的版本.
比如:java7

需求

計算相隔天數的情況有兩種:
①不考慮時分秒.
②考慮時分秒的.

舉例:

date1="2017-06-18 21:28:28", date2="2017-06-19 01:28:28".

對於第一種情況,不考慮時分秒的話,上面date1和date2相差的天數為1.
對於第二種情況,考慮時分秒的話,上面date1和date2相差的天數為0.

好了直接上程式碼:

/**
     * 獲取兩個日期之間的天數
     * @param date1
     * @param
date2 * @param isExactMillisecond 是否精確到毫秒 比如2017年6月1號 21:21:28,2017年6月2號 20:21:28,true:相差天數為0,false相差天數為1 * @author yutao * @return date2大於date1的話,返回正數,否則返回負數. * @date 2017年6月19日下午6:00:21 */
public static int getDaysDifference(Date date1, Date date2, boolean isExactMillisecond){ /*Date temp;//如果不區分date2和date1誰大誰小,可以解開註釋 if(date1.getTime() > date2.getTime()){ temp = date2; date2=date1; date1=temp; }*/
int days = 1; Calendar cal = Calendar.getInstance(); cal.setTime(date1); int year1 = cal.get(Calendar.YEAR); int dayOfYear1 = cal.get(Calendar.DAY_OF_YEAR); cal.clear(); cal.setTime(date2); int year2 = cal.get(Calendar.YEAR); int
dayOfYear2 = cal.get(Calendar.DAY_OF_YEAR); long diffTime = date2.getTime() - date1.getTime(); if(isExactMillisecond){//精準考慮 return (int) (diffTime / (1000*3600*24)); } //不考慮時間,只考慮日期 if(year1==year2 && dayOfYear1 == dayOfYear2){//同一天 days = 0; }else{ days = (int) (diffTime / (1000*3600*24)); if(diffTime >= (1000*3600*24)){//不同天,且大於一天 if(diffTime % (1000*3600*24) > 0){ //假設為1.5天,就算2天 days++; } } } return days; }

如有錯誤,歡迎指出.