logo资料库

Java节假日算法(免费).docx

第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
资料共16页,剩余部分请下载后查看
Java节假日算法
Java 节假日算法 这里有三个类分别是: 1. DateToDate 2. Vacation 3. WorkDate import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.List; import java.util.Scanner; public class DateToDate { /*************************************************************************** * 在 beginDate 和 endDate 之间所包含假期的天数,若不包含则返回 0; * 假期和周末分别进行单独考虑! * @param list * @param beginDate * @param endDate
* @return */ public static int getContainVacation(List list, Date beginDate, Date endDate) { int days = 0; Calendar begincal = new GregorianCalendar(); Calendar endcal = new GregorianCalendar(); begincal.setTime(beginDate); endcal.setTime(endDate); for (int i = 0; i < list.size(); i++) { System.out.println("执行到这里了!"); Vacation vac = (Vacation) list.get(i); Date tempDate = vac.getDate(); Calendar tempcal = new GregorianCalendar(); tempcal.setTime(tempDate); int tempDays = vac.getDays(); int tempDay = tempcal.get(Calendar.DAY_OF_YEAR); int dd=0; if ((tempDate.after(endDate)) || (tempDate.before(beginDate))) { System.out.println(tempDate.after(endDate)); System.out.println("执行到这里了吗???!");
continue; } else { System.out.println("应该执行到这里了!@"); while (tempDay < endcal.get(Calendar.DAY_OF_YEAR) && dd
} //单独考虑周末的情况!不知道哪一个数字代表周六,周日! System.out.println("周末!"); for(int j=begincal.get(Calendar.DAY_OF_YEAR);j<=endcal.get(Calendar.DAY_OF_YEAR);j++) { if(begincal.get(Calendar.DAY_OF_WEEK)==7||begincal.get(Calendar.DAY_OF_WEEK)==1 ) { } System.out.println("周末判断!"); days++; begincal.add(Calendar.DAY_OF_YEAR,1); } return days; } /*************************************************************************** * 从文件中读取字符串到集合中,然后返回集合。 * * @param file * @return * @throws Exception */
public static List getDateFromFile(File file) throws Exception { } List list = new ArrayList(); BufferedReader breader = new BufferedReader(new FileReader(file)); String str = ""; while ((str = breader.readLine()) != null) { } Vacation vac = DateToDate.divideStr(str); list.add(vac); System.out.println(list); return list; /*************************************************************************** * 将字符串最终切割成一个假期对象! * * @param str * @return * @throws ParseException */ public static Vacation divideStr(String str) throws ParseException { Vacation vac = new Vacation();
String[] array = str.split(" "); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Date date = format.parse(array[0]); int days = Integer.parseInt(array[1]); vac.setDate(date); vac.setDays(days); return vac; } /*************************************************************************** * 输入的前后两天之间的相差的天数! * * @param beginDate * @param endDate * @return */ public static int getDays(Date beginDate, Date endDate) { long days = 0; try { if (beginDate.compareTo(endDate) > 0) { throw new IllegalArgumentException("日期输入不正确!");
} days = (endDate.getTime() - beginDate.getTime()) / (1000 * 60 * 60 * 24); } catch (Exception e) { } e.getStackTrace(); return (int) days; } /*** * 从键盘标准输入两个日期! * @return */ public static String[] getInDate() { } System.out.println("请输入开始和结束日期!格式如下:yyyy-MM-dd"); Scanner scanner=new Scanner(System.in); String str=scanner.nextLine(); String[] array=str.split(" "); return array; public static void main(String args[]) { String[] str=DateToDate.getInDate(); SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
try{ Date beginDate=format.parse(str[0]); Date endDate=format.parse(str[1]); File file=new File("F:\\jinxing.txt"); List list=DateToDate.getDateFromFile(file); int days=DateToDate.getContainVacation(list, beginDate, endDate); System.out.println("总共的节假日包括周末:"+days); int allday=DateToDate.getDays(beginDate, endDate); System.out.println("总共的天数:"+allday); System.out.println("总共的工作日为:"+(allday-days)); }catch(Exception e) e.getStackTrace(); { } } } //利用面向对象的思想把假期进行封装成实体类! import java.io.Serializable; import java.util.Date; public class Vacation implements Serializable { /** *
分享到:
收藏