我尝试使用以下方法查找天数,
public static int findNoOfDays(int year, int month, int day) {
Calendar calendar = Calendar.getInstance();
calendar.set(year, month - 1, day);
int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
return days;
}
Run Code Online (Sandbox Code Playgroud)
同样,我希望通过给出开始日期和结束日期来获得天数,并获得天数excluding Saturday and Sunday.
这是一种计算两个日期之间天数的方法:
private int calculateNumberOfDaysBetween(Date startDate, Date endDate) {
if (startDate.after(endDate)) {
throw new IllegalArgumentException("End date should be grater or equals to start date");
}
long startDateTime = startDate.getTime();
long endDateTime = endDate.getTime();
long milPerDay = 1000*60*60*24;
int numOfDays = (int) ((endDateTime - startDateTime) / milPerDay); // calculate vacation duration in days
return ( numOfDays + 1); // add one day to include start date in interval
}
Run Code Online (Sandbox Code Playgroud)
这是一个计算指定时间段内周末天数的方法:
private static int calculateNumberOfWeekendsInRange(Date startDate, Date endDate) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(startDate);
int counter = 0;
while(!calendar.getTime().after(endDate)) {
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
if (dayOfWeek==1 || dayOfWeek==7) {
counter++;
}
calendar.add(Calendar.DAY_OF_MONTH, 1);
}
return counter;
}
Run Code Online (Sandbox Code Playgroud)
编辑:
我改变了最后一种方法,现在它计算了不包括周末天数的天数:
private int calculateNumberOfDaysExcludeWeekends(Date startDate, Date endDate) {
if (startDate.after(endDate)) {
throw new IllegalArgumentException("End date should be grater or equals to start date");
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(startDate);
int numOfDays = 0;
while(!calendar.getTime().after(endDate)) {
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
if ( (dayOfWeek>1) && (dayOfWeek<7) ) {
numOfDays++;
}
calendar.add(Calendar.DAY_OF_MONTH, 1);
}
return numOfDays;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6744 次 |
| 最近记录: |