資源簡介
java實現輸入任意兩個日期輸出月份數和天數,綜合考慮閏年、2月等因素,對于整月計算利息或按天數計算利息提供基礎工具類。也可以吧內部類獨立出來,方便跨包調用,可自行調整。很實用的一個實現。其他百度查到的很多類似方法存在或多或少的缺陷。

代碼片段和文件信息
package?junit.test;
import?java.util.Date;
import?java.util.GregorianCalendar;
import?java.text.DateFormat;
import?java.text.ParseException;
import?java.text.SimpleDateFormat;
import?java.util.Calendar;
public?class?MyCalendar?{
Calendar?datebegin;
Calendar?dateend;
DateFormat?df;
public?static?void?main(String[]?args)?{
DateCalculate?dateCalculate?=?DateCalculate.calculate(“2016/01/28“?“2017/01/31“);
System.out.println(“月差為:?“?+?dateCalculate.getDifferenceOfMonths());
System.out.println(“天差為:?“?+?dateCalculate.getDifferenceOfDays());
System.out.println();
}
public?Calendar?getDatebegin()?{
return?datebegin;
}
public?void?setDatebegin(Calendar?datebegin)?{
this.datebegin?=?datebegin;
}
public?Calendar?getDateend()?{
return?dateend;
}
public?void?setDateend(Calendar?dateend)?{
this.dateend?=?dateend;
}
public?DateFormat?getDf()?{
return?df;
}
public?void?setDf(DateFormat?df)?{
this.df?=?df;
}
public?MyCalendar()?{
df?=?new?SimpleDateFormat(“yyyy/MM/dd“);
datebegin?=?Calendar.getInstance();
dateend?=?Calendar.getInstance();
}
public?MyCalendar(String?begin?String?end)?throws?ParseException?{
df?=?new?java.text.SimpleDateFormat(“yyyy/MM/dd“);
datebegin?=?Calendar.getInstance();
dateend?=?Calendar.getInstance();
datebegin.setTime(df.parse(begin));
dateend.setTime(df.parse(end));
}
/**
?*?當前日比較
?*?
?*?@return
?*/
private?boolean?compareTo()?{
return?datebegin.get(Calendar.DAY_OF_MONTH)?>?dateend
.get(Calendar.DAY_OF_MONTH);
}
private?int?CalculatorYear()?{
int?year1?=?datebegin.get(Calendar.YEAR);
int?year2?=?dateend.get(Calendar.YEAR);
int?month1?=?datebegin.get(Calendar.MONTH);
int?month2?=?dateend.get(Calendar.MONTH);
int?year?=?year2?-?year1;
if?(compareTo())?//?計算天時向月借了一個月
month2?-=?1;
if?(month1?>?month2)
year?-=?1;
return?year;
}
private?int?CalculatorMonth()?{
int?month1?=?datebegin.get(Calendar.MONTH);
int?month2?=?dateend.get(Calendar.MONTH);
int?month?=?0;
if?(compareTo())?//?計算天時向月借了一個月
month2?-=?1;
if?(month2?>=?month1)
month?=?month2?-?month1;
else?if?(month2? month?=?12?+?month2?-?month1;
return?month;
}
private?int?CalculatorDay()?{
int?day11?=?datebegin.get(Calendar.DAY_OF_MONTH);
int?day21?=?dateend.get(Calendar.DAY_OF_MONTH);
if?(day21?>=?day11)?{
return?day21?-?day11;
}?else?{//?借一整月
Calendar?cal?=?Calendar.getInstance();
cal.setTime(dateend.getTime());
cal.set(Calendar.DAY_OF_MONTH?1);
cal.add(dateend.DAY_OF_MONTH?-1);
return?cal.getActualMaximum(Calendar.DATE)?+?day21?-?day11;
}
}
/**
?*?返回兩個時間相隔的多少年
?*?
?*?@return
?*/
public?int?getYear()?{
return?CalculatorYear()?>?0???CalculatorYear()?:?0;
}
/**
?*?返回除去整數年后的月數
?*?
?*?@return
?*/
public?int?getMonth()?{
int?month?=?CalculatorMonth()?%?12;
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????8341??2017-01-18?11:21??MyCalendar.java
-----------?---------??----------?-----??----
?????????????????8341????????????????????1
- 上一篇:Android開發與應用
- 下一篇:簡易C語言編譯器Java源代碼
評論
共有 條評論