一. 获取当月总天数
public class Test5 {
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date d = sdf.parse("2017-2-04");
System.out.println(getDayOfMonth(d));
}
/**
* 获取当月总天数
* @param d
* @return
*/
public static int getDayOfMonth(Date d ){
Calendar aCalendar = Calendar.getInstance(Locale.CHINA);
aCalendar.setTime(d);
int day=aCalendar.getActualMaximum(Calendar.DATE);
return day;
}
}
二:获取两个不同月之间的总天数 如2017.2.10 (到月底18天)到 218.5.20 (21天) 共计18+21=39天
/**
* 获得头尾天数总和 zl
* @param startDay
* @param endDay
* @return
*/
public int getdate(Date startDay,Date endDay){
Calendar calendar = Calendar.getInstance();
calendar.setTime(startDay);
int day1 = calendar.get(Calendar.DAY_OF_MONTH); //获取当前天数
int last = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); //获取本月最大天数
//得到起始月剩余天数
int sumStart=last-day1+1;
calendar.setTime(endDay);
//得到合同终止月剩余天数
int day2 = calendar.get(Calendar.DAY_OF_MONTH); //获取当前天数
//获取头加尾的天数
int sumDay=sumStart+day2;
return sumDay;
}
public class Test4 {
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date d = sdf.parse("2015-12-04");
java.util.Date c = sdf.parse("2016-03-16");
getdate(d,c);
}
public static void getdate(Date date1,Date date2){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date1);
int day = calendar.get(Calendar.DAY_OF_MONTH); //获取当前天数
int first = calendar.getActualMinimum(Calendar.DAY_OF_MONTH); //获取本月最小天数
int last = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); //获取本月最大天数
System.out.println(day+"-----"+first+"------"+last);
System.out.println("剩余天数:"+(last-day));
calendar.setTime(date2);
int day2 = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println("开始天数"+day2);
}
}
三.取得当月第一天 和最后一天日期
/**
* 得到本月第一天的日期
* @param date
* @return
*/
public Date getFirstDayOfMonth(Date date) {
Calendar cDay = Calendar.getInstance();
cDay.setTime(date);
cDay.set(Calendar.DAY_OF_MONTH, 1);
return cDay.getTime();
}
/**
* 得到本月最后一天的日期
* @param date
* @return
*/
public Date getLastDayOfMonth(Date date) {
Calendar cDay = Calendar.getInstance();
cDay.setTime(date);
cDay.set(Calendar.DAY_OF_MONTH, cDay.getActualMaximum(Calendar.DAY_OF_MONTH));
return cDay.getTime();
}
四.日期月份加一个月
/**
* 日期月份加一个月
* @param datetime
* @return
* @throws ParseException
*/
public static String dateFormat(String date) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dt = sdf.parse(date);
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(dt);
rightNow.add(Calendar.MONTH, +1);
Date dt1 = rightNow.getTime();
String reStr = sdf.format(dt1);
return reStr;
}
五.取得两个月之间的月份差
/**
*
* @param date1
* @param date2
* @return获得月份差
* @throws ParseException
*/
public int getMonth(Date start, Date end) {
if (start.after(end)) {
Date t = start;
start = end;
end = t;
}
Calendar startCalendar = Calendar.getInstance();
startCalendar.setTime(start);
Calendar endCalendar = Calendar.getInstance();
endCalendar.setTime(end);
Calendar temp = Calendar.getInstance();
temp.setTime(end);
temp.add(Calendar.DATE, 1);
int year = endCalendar.get(Calendar.YEAR)
- startCalendar.get(Calendar.YEAR);
int month = endCalendar.get(Calendar.MONTH)
- startCalendar.get(Calendar.MONTH);
if ((startCalendar.get(Calendar.DATE) == 1)
&& (temp.get(Calendar.DATE) == 1)) {
return year * 12 + month + 1;
} else if ((startCalendar.get(Calendar.DATE) != 1)
&& (temp.get(Calendar.DATE) == 1)) {
return year * 12 + month;
} else if ((startCalendar.get(Calendar.DATE) == 1)
&& (temp.get(Calendar.DATE) != 1)) {
return year * 12 + month;
} else {
return (year * 12 + month - 1) < 0 ? 0 : (year * 12 + month);
}
}
六.计算两个日期之间相差的天数
/**
* 计算两个日期之间相差的天数
* @param smdate
* @param bdate
* @return
* @throws ParseException
*/
public static int daysBetween(Date smdate,Date bdate) throws ParseException
{
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
smdate=sdf.parse(sdf.format(smdate));
bdate=sdf.parse(sdf.format(bdate));
Calendar cal = Calendar.getInstance();
cal.setTime(smdate);
long time1 = cal.getTimeInMillis();
cal.setTime(bdate);
long time2 = cal.getTimeInMillis();
long between_days=(time2-time1)/(1000*3600*24);
return Integer.parseInt(String.valueOf(between_days));
}