Here you can find the source of countWeekend(String startDate, String endDate)
public static int countWeekend(String startDate, String endDate)
//package com.java2s; //License from project: Apache License import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; public class Main { public static int countWeekend(String startDate, String endDate) { int result = 0; Date sdate = null;//from w w w . ja va 2s . co m Date edate = null; if (startDate.indexOf("/") > 0 && endDate.indexOf("/") > 0) { sdate = getDateObj(startDate, "/"); edate = getDateObj(endDate, "/"); } if (startDate.indexOf("-") > 0 && endDate.indexOf("-") > 0) { sdate = getDateObj(startDate, "-"); edate = getDateObj(endDate, "-"); } int sumDays = Math.abs(getDiffDays(startDate, endDate)); int dayOfWeek = 0; for (int i = 0; i <= sumDays; i++) { dayOfWeek = getDayOfWeek(getDateAdd(sdate, i)); if (dayOfWeek == 1 || dayOfWeek == 7) { result++; } } return result; } public static Date getDateObj(int year, int month, int day) { Calendar c = new GregorianCalendar(); c.set(year, month - 1, day); return c.getTime(); } public static Date getDateObj(String argsDate, String split) { String[] temp = argsDate.split(split); int year = new Integer(temp[0]).intValue(); int month = new Integer(temp[1]).intValue(); int day = new Integer(temp[2]).intValue(); return getDateObj(year, month, day); } public static Date getDateObj() { Calendar c = new GregorianCalendar(); return c.getTime(); } public static int getDiffDays(String startDate, String endDate) { long diff = 0; SimpleDateFormat ft = null; if (startDate.indexOf("/") > 0 && endDate.indexOf("/") > 0) { ft = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); } if (startDate.indexOf("-") > 0 && endDate.indexOf("-") > 0) { ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); } try { Date sDate = ft.parse(startDate + " 00:00:00"); Date eDate = ft.parse(endDate + " 00:00:00"); diff = eDate.getTime() - sDate.getTime(); diff = diff / 86400000;// 1000*60*60*24; } catch (ParseException e) { e.printStackTrace(); } return (int) diff; } public static int getDayOfWeek(String year, String month, String day) { Calendar cal = new GregorianCalendar(new Integer(year).intValue(), new Integer(month).intValue() - 1, new Integer(day).intValue()); return cal.get(Calendar.DAY_OF_WEEK); } public static int getDayOfWeek(String date) { String[] temp = null; if (date.indexOf("/") > 0) { temp = date.split("/"); } if (date.indexOf("-") > 0) { temp = date.split("-"); } return getDayOfWeek(temp[0], temp[1], temp[2]); } public static int getDayOfWeek(Date date) { Calendar cal = new GregorianCalendar(); cal.setTime(date); return cal.get(Calendar.DAY_OF_WEEK); } public static Date getDateAdd(Date date, int amount) { Calendar cal = new GregorianCalendar(); cal.setTime(date); cal.add(GregorianCalendar.DATE, amount); return cal.getTime(); } }