package loancompute;
import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class CommonDateMath {
public CommonDateMath()
{
}
public CommonDateMath getInstance()
{
return new CommonDateMath();
}
/**
* 获取当前系统时间
* 如:20080526 15:45:12
* @return
*/
public static String getNowTime()
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat sdf1 = new SimpleDateFormat("mm:ss");
Calendar _calendar1 = Calendar.getInstance();
return sdf.format(new Date()) + " " + String.valueOf(_calendar1.get(_calendar1.HOUR_OF_DAY ) + 8)
+ ":" + sdf1.format(new Date()) ;
}
/**
* 计算两个日期之间相差的天数
* @author lzch 2008年5月6日22:39:19
* @param frstday 第一个日期,日期格式为:yyyyMMdd,例如:20080405
* @param secondday第二个日期,日期格式为:yyyyMMdd,例如:20080405
* @return int 两个日期之间相差的天数
*/
public static int minusDay(String frstday,String secondday)
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
Date _frstdate = null;
Date _seconddate = null;
try {
_frstdate = sdf.parse(frstday);
_seconddate = sdf.parse(secondday);
} catch (ParseException e) {
e.printStackTrace();
}
long daterange = Math.abs(_frstdate.getTime() - _seconddate.getTime());
long time = 1000*3600*24;
long minusday = daterange / time;
return Integer.parseInt(String.valueOf(minusday));
}
/**
* 计算两个日期之间差的月数。
* @param firstDate 第一个日期(较小的日期)
* @param secondDate 第二个日期(较大的日期)
* @return int 两个日期之间的月数
* @throws ParseException
*/
public static int minusMonth(String firstDate,String secondDate)
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String firstMonth = firstDate.substring(0, 6);
String secondMonth = secondDate.substring(0, 6);
String fistDay = firstDate.substring(6);
String secondDay = secondDate.substring(6);
String _tmp_firstDate;
Date fdate = null;
Date sdate = null;
try {
_tmp_firstDate = getDays(firstMonth,fistDay);
String _tmp_secondDate = getDays(secondMonth,secondDay);
fdate = sdf.parse(_tmp_firstDate);
sdate = sdf.parse(_tmp_secondDate);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar _calendar1 = Calendar.getInstance();
_calendar1.setTime(fdate);
Calendar _calendar2 = Calendar.getInstance();
_calendar2.setTime(sdate);
int minusNums = -1;
//将第一个月的日期与第二个月比较,如果第一个月小于第二个月,则将第一个月加上一个月再与第二个月比较;
//如此循环,知道第一个月大于第二个月时,这时候的i就是两个之间差的月数
while((_calendar1.before(_calendar2))||(_calendar1.compareTo(_calendar2) == 0) )
{
_calendar1.add(Calendar.MONTH, 1);
minusNums ++;
}
return minusNums;
}
/**
* 得到距离当前月份num月的月份
* @param num 距离当前月份的月数
* @return String 距离当前月份num月的月份
* @throws java.text.ParseException
*/
public static String getMonths(String month,int num) throws java.text.ParseException
{
Date _date = new Date();
Calendar _car = Calendar.getInstance();
SimpleDateFormat _YearMonth = new SimpleDateFormat("yyyyMM");
_car.setTime(_YearMonth.parse(month));
_car.add(Calendar.MONTH, num);
return _YearMonth.format(_car.getTime());
}
/**
* 得到距离days日期num个星期的日期
* @param days 基准日期,输入格式为:yyyyMMdd,例如:20080429
* @param num 星期数,输入整数(可以包含负数)
* @return 距离days日期num个星期的日期,输出格式为:yyyyMMdd,例如:20080425
* @throws java.text.ParseException
*/
public static String getWeeks(String days,int num)throws java.text.ParseException
{
Date _date = new Date();
Calendar _car = Calendar.getInstance();
SimpleDateFormat _YearMonthDay = new SimpleDateFormat("yyyyMMdd");
_car.setTime(_date);
_car.add(Calendar.WEEK_OF_YEAR,num);
return _YearMonthDay.format(_car.getTime());
}
/**
* 得到距离基准日期num天的日期
* @param day 基准日期,输入格式为:yyyyMMdd,例如:20080425
* @param num 天数,输入整数(可以包含负数)
* @return 结果日期,输出格式为:yyyyMMdd,例如:20080425
* @throws java.text.ParseException
*/
public static String getDays(String day,int num) throws java.text.ParseException
{
Calendar _car = Calendar.getInstance();
SimpleDateFormat _YearMonthDay = new SimpleDateFormat("yyyyMMdd");
_car.setTime(_YearMonthDay.parse(day));
_car.add(Calendar.DATE,num);
return _YearMonthDay.format(_car.getTime());
}
/**
* 得到距离month月份num个月的月份的最后一天
* @param month,基准月份,输入格式为:yyyyMM,例如:200804
* @param num,月数,输入整数(可以包含负数)
* @return 返回目标月份的最后一天的日期,输出格式为:yyyyMMdd,例如:20080425
* @throws java.text.ParseException
*/
public static String getMonthLastDay(String month,int num) throws java.text.ParseException
{
Calendar _car = Calendar.getInstance();
SimpleDateFormat _YearMonthDay = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat _YearMonth = new SimpleDateFormat("yyyyMM");
_car.setTime(_YearMonth.parse(month));
//得到距离当前月份num个月的月份
_car.add(Calendar.MONTH, num + 1);
_car.set(Calendar.DAY_OF_MONTH, 1);
_car.add(Calendar.DAY_OF_MONTH, -1);
return _YearMonthDay.format(_car.getTime());
}
/**
* 得到month月的days的日期,如果days超过该月的最大日期,则得到该月的最后一天。
* @param month 基准月份,输入格式为:yyyyMM,例如:200804
* @param days ,日期,输入格式为:dd,例如:25或32
* @return 返回目标日期,输出格式为:yyyyMMdd,例如:20080425
* @throws java.text.ParseException
*/
public static String getDays(String month,String days) throws java.text.ParseException
{
Calendar _car1 = Calendar.getInstance();
Calendar _car2 = Calendar.getInstance();
SimpleDateFormat _YearMonthDay = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat _YearMonth = new SimpleDateFormat("yyyyMM");
SimpleDateFormat _Day = new SimpleDateFormat("dd");
String day = month + days;
String factMonth = null;
String factDay = null;
_car1.setTime(_Day.parse(days));
_car2.setTime(_Day.parse("28"));
factMonth = _YearMonth.format(_YearMonth.parse(month));
factDay = day;
//如果输入的日期不是有可能是月底的话,则直接返回输入的日期;
if(_car1.before(_car2))
{
return factDay;
}else{
String lastday = getMonthLastDay(factMonth,0);
//如果输入的日期大于月底日期的话,则将月底日期返回。
if(Integer.parseInt(lastday) < Integer.parseInt(factDay))
{
return lastday;
}else
{
return factDay;
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
这是贷款试算器的计算方法的java源代码,目前有按月等额本息、按月等额本金、到期一次结清和按月等额还款等方式。
资源推荐
资源详情
资源评论
收起资源包目录
loancompute.rar (7个子文件)
loancompute
MoEvenCorpusIntrate.java 4KB
LoanOperate.java 5KB
MatureOnceCorpus.java 1KB
MoEvenCorpus.java 3KB
CommonDateMath.java 7KB
CommonOperational.java 4KB
MoEvenMoney.java 334B
共 7 条
- 1
资源评论
locus_lee
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功