java日期方面的工具类
1.获取两个日期相差的月份数量 精确的月份
input(String start, String end) 设置开始和结束时间,字符串类型(yyyy-MM-dd)格式
output (return int)返回一个整型的数量值
public static int getDifferenceOnlyMonth(String start, String end) {
com.ibm.icu.text.SimpleDateFormat sdf = new com.ibm.icu.text.SimpleDateFormat("yyyy-MM-dd");
String str1 = start.substring(0, 10);
//String str1 = start.substring(0, 7);
String str2 = end.substring(0, 10);
//String str2 = end.substring(0, 7);
//System.out.println("str1:"+str1+" str2:"+str2);
Calendar bef = Calendar.getInstance();
Calendar aft = Calendar.getInstance();
try {
bef.setTime(sdf.parse(str1));
aft.setTime(sdf.parse(str2));
} catch (ParseException e) {
e.printStackTrace();
}
//
String day1 = start.substring(8,10);
String day2 = end.substring(8,10);
if(Integer.parseInt(day1)>Integer.parseInt(day2)){
int result = aft.get(Calendar.MONTH) - bef.get(Calendar.MONTH)-1;
int month = (aft.get(Calendar.YEAR) - bef.get(Calendar.YEAR)) * 12;
return Math.abs(month + result);
}else{
int result = aft.get(Calendar.MONTH) - bef.get(Calendar.MONTH);
int month = (aft.get(Calendar.YEAR) - bef.get(Calendar.YEAR)) * 12;
return Math.abs(month + result);
}
}
2.两个日期相差的月份数量 不足一个月按照一个月计算
input(String start, String end) 设置开始和结束时间,字符串类型(yyyy-MM-dd)格式
output (return int)返回一个整型的数量值
public static int getDifference(String start, String end) {
com.ibm.icu.text.SimpleDateFormat sdf = new com.ibm.icu.text.SimpleDateFormat("yyyy-MM");
String str1 = start.substring(0, 7);
String str2 = end.substring(0, 7);
Calendar bef = Calendar.getInstance();
Calendar aft = Calendar.getInstance();
try {
bef.setTime(sdf.parse(str1));
aft.setTime(sdf.parse(str2));
} catch (ParseException e) {
e.printStackTrace();
}
int result = aft.get(Calendar.MONTH) - bef.get(Calendar.MONTH);
int month = (aft.get(Calendar.YEAR) - bef.get(Calendar.YEAR)) * 12;
return Math.abs(month + result);
}
3.获取年龄
input:int year month day
output:(int) age
public static int getAge(int year, int month, int day) {
int age = 0;
boolean b = true;
Calendar cal = Calendar.getInstance();
int yearNow = cal.get(Calendar.YEAR);
int monthNow = cal.get(Calendar.MONTH) + 1;
int dayNow = cal.get(Calendar.DAY_OF_MONTH);
int years, months = 0, days = 0;
if (dayNow < day) {
dayNow = dayNow + 30;
monthNow = monthNow - 1;
}
if (monthNow < month) {
monthNow = monthNow + 12;
yearNow = yearNow - 1;
}
if (yearNow < year) {
b = false;
}
if (b) {
years = yearNow - year;
months = monthNow - month;
days = dayNow - day;
String result = years + "岁零" + months + "个月" + days + "天";
age = years;
}
return age;
}