资源简介
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 < month1) // 借一整年
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源代码
评论
共有 条评论