• 大小: 2KB
    文件类型: .rar
    金币: 2
    下载: 0 次
    发布日期: 2024-02-08
  • 语言: Java
  • 标签: 月份数  日期数  

资源简介

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


评论

共有 条评论