public static String getWeekDay(String date, String type) throws ParseException {
String[] sWeekDates = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
String[] sWeekDatesE = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
Calendar cal = Calendar.getInstance();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");
cal.setTime(formatter.parse(date));
if (type.equals("2"))
return sWeekDates[cal.get(Calendar.DAY_OF_WEEK) - 1];
else if (type.equals("3"))
return sWeekDatesE[cal.get(Calendar.DAY_OF_WEEK) - 1];
else
return String.valueOf(cal.get(Calendar.DAY_OF_WEEK) - 1);
}
传入的日期格式为YYYY/MM/DD
type="1" 输出数字格式1,2,3,4,5,6,7
type="2" 输出中文,星期一等
type="3" 输出英文等
获得两个日期之间的天数
public static int getDays(String sBeginDate, String sEndDate) {
Date startDate = java.sql.Date.valueOf(sBeginDate.replace('/', '-'));
Date endDate = java.sql.Date.valueOf(sEndDate.replace('/', '-'));
int iDays = (int) ((endDate.getTime() - startDate.getTime()) / 86400000L);
return iDays;
}
获得两个日期之间的月数,向下取整
public static int getMonths(String beginDate1, String endDate1) throws ParseException {
Date beginDate = getDate(beginDate1);
Date endDate = getDate(endDate1);
Calendar former = Calendar.getInstance();
Calendar latter = Calendar.getInstance();
former.clear();
latter.clear();
boolean positive = true;
if (beginDate.after(endDate)) {
former.setTime(endDate);
latter.setTime(beginDate);
positive = false;
} else {
former.setTime(beginDate);
latter.setTime(endDate);
}
int monthCounter = 0;
while (former.get(Calendar.YEAR) != latter.get(Calendar.YEAR) || former.get(Calendar.MONTH) != latter.get(Calendar.MONTH)) {
former.add(Calendar.MONTH, 1);
monthCounter++;
}
if (positive)
return monthCounter;
else
return -monthCounter;
}
获得两个日期之间的月数,向上取整
public static int getUpMonths(String date1, String date2) throws Exception {
String beginDate = "";
String endDate = "";
int months_Between = 0;
if (date1.equals(date2)) {
return months_Between;
} else if (date1.compareTo(date2) > 0) {
endDate = date1;
beginDate = date2;
} else {
beginDate = date1;
endDate = date2;
}
Calendar beginCalendar = Calendar.getInstance();
beginCalendar.setTime(getDate(beginDate));
Calendar endCalendar = Calendar.getInstance();
endCalendar.setTime(getDate(endDate));
while (beginCalendar.get(Calendar.YEAR) != endCalendar.get(Calendar.YEAR)
|| beginCalendar.get(Calendar.MONTH) != endCalendar.get(Calendar.MONTH)) {
beginCalendar.add(Calendar.MONTH, 1);
months_Between++;
}
if (!monthEnd(beginDate)) {
String beginDays = beginDate.substring(8);
String endDays = endDate.substring(8);
if (endDays.compareTo(beginDays) > 0) {
months_Between++;
}
}
return months_Between;
}
取两个日期之间的年数,向下取整
public static int getYears(String beginDate1, String endDate1) throws ParseException {
Date beginDate = getDate(beginDate1);
Date endDate = getDate(endDate1);
Calendar former = Calendar.getInstance();
Calendar latter = Calendar.getInstance();
former.clear();
latter.clear();
boolean positive = true;
if (beginDate.after(endDate)) {
former.setTime(endDate);
latter.setTime(beginDate);
positive = false;
} else {
former.setTime(beginDate);
latter.setTime(endDate);
}
int yearCounter = 0;
while (former.get(Calendar.YEAR) != latter.get(Calendar.YEAR)) {
former.add(Calendar.YEAR, 1);
yearCounter++;
}
if (positive)
return yearCounter;
else
return -yearCounter;
}
取两个日期之间的年数,向上取整
public static int getUpYears(String beginDate1, String endDate1) throws ParseException {
Date beginDate = getDate(beginDate1);
Date endDate = getDate(endDate1);
Calendar former = Calendar.getInstance();
Calendar latter = Calendar.getInstance();
former.clear();
latter.clear();
boolean positive = true;
if (beginDate.after(endDate)) {
former.setTime(endDate);
latter.setTime(beginDate);
positive = false;
} else {
former.setTime(beginDate);
latter.setTime(endDate);
}
int yearCounter = 0;
while (former.get(Calendar.YEAR) != latter.get(Calendar.YEAR)) {
former.add(Calendar.YEAR, 1);
yearCounter++;
}
// 当天数前者小于后者时才加一,防止少计算一年
if (positive && beginDate1.substring(5).compareTo(endDate1.substring(5)) < 0) {
yearCounter++;
} else if (!positive && beginDate1.substring(5).compareTo(endDate1.substring(5)) > 0) {
yearCounter++;
}
if (positive)
return yearCounter;
else
return -yearCounter;
}
日期比较
public static int compareDate(String date1, String date2) throws ParseException {
Date date1d = DateFunctions.getDate(date1);
Date date2d = DateFunctions.getDate(date2);
if (date1d.after(date2d))
return 1;
if (date1d.before(date2d))
return -1;
else
return 0;
}