import java.text.Parse Exception; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class Exercise { // 在该类中有5个方法,在下面的步骤中将会讲解,这里省略 }
// 获取指定日期所在周的周一日期 public static String getMonday(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); c.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY); return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime()); }(3) 继续在 Exercise 类中定义获取两个日期间相差天数的方法——getTwoDay(),该方法需要传递两个 String 类型的参数。
// 获取两个日期间相差的天数 public static int getTwoDay(String sj1, String sj2) { SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd"); int day = 0; try { Date date = myFormatter.parse(sj1); Date mydate = myFormatter.parse(sj2); // 计算两个日期间相差的天数 day = (int)((date.getTime()-mydate.getTime())/(24*60*60*1000)); } catch(Exception e) { return 0; } return day; }(4) 在 Exercise 类中继续创建两个静态方法,分别完成 String 类型的日期与 Date 类型日期的互换功能。代码如下:
// 将String类型的日期转换为Date类型 public static Date strToDate(String strDate) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date = null; try { date = sdf.parse(strDate); } catch(ParseException e) { e.printStackTrace(); } return date; } // 将Date类型的日期转换为String类型 public static String DateToStr(Date date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String strDate = sdf.format(date); return strDate; }(5) 在 Exercise 类中定义获取指定日期所在周的指定星期的日期方法——getWeek(),该方法需要传递两个 String 类型的参数,其中第一个参数表示指定的日期,第二个参数表示星期几。
// 获得一个日期所在周的星期几的日期,如要找出2011年5月1日所在周的星期一是几号 // @param sdate所确定的日期形式2011-05-01 // @param num要确定的是周几(1表示周一,2表示周二) // @return public static String getWeek(String sdate, String num) { // 再转换为时间 Date dd = strToDate(sdate); Calendar c = Calendar.getInstance(); c.setTime(dd); int weekNo = Integer.parseInt(num); switch (weekNo) { case 1: c.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY); //返回星期一所在的日期 break; case 2: c.set(Calendar.DAY_OF_WEEK,Calendar.TUESDAY); //返回星期二所在的日期 break; case 3: c.set(Calendar.DAY_OF_WEEK,Calendar.WEDNESDAY); //返回星期三所在的日期 break; case 4: c.set(Calendar.DAY_OF_WEEK,Calendar.THURSDAY); //返回星期四所在的日期 break; case 5: c.set(Calendar.DAY_OF_WEEK,Calendar.FRIDAY); //返回星期五所在的日期 break; case 6: c.set(Calendar.DAY_OF_WEEK,Calendar.SATURDAY); //返回星期六所在的曰期 break; case 7: c.set(Calendar.DAY_OF_WEEK,Calendar.SUNDAY); //返回星期曰所在的日期 break; } return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime()); }
package com.common.mxl; import java.util.Date; import java.util.Scanner; import com.common.mxl.Exercise; public class Test15 { public static void main(String[] args) { Scanner input = new Scanner(System.in); Date date = new Date(); String monday = Exercise.getMonday(date); System.out.print("这周一的日期为【"+monday+"】,"); String nowStr = Exercise.DateToStr(date); // 将 Date 类型的日期转换为 String 类型 int num = Exercise.getTwoDay(nowStr,monday); System.out.print("与今天相差【"+num+"】天"); SyStem.out.println("\n请输入您要查询本周星期几的日期(1表示星期一,2表示星期二…):"); String weekNo = input.next(); //获取用户输入的星期 int no = Integer.parseInt(weekNo); //将用户输入的星期转换为int类型,以便使用switch语句 String strWeekNo = ""; switch(no) { case 1: strWeekNo = "星期一"; break; case 2: strWeekNo = "星期二"; break; case 3: strWeekNo = "星期三"; break; case 4: strWeekNo = "星期四"; break; case 5: strWeekNo = "星期五"; break; case 6: strWeekNo = "星期六"; break; case 7: strWeekNo = "星期日"; break; } System.out.println("本周【"+strWeekNo+"】的日期为:"+Exercise.getWeek(nowStr,weekNo)); } }在本程序中,综合使用了 Date 类、Calendar 类和 SimpleDateFormat 类完成了时间处理功能。在源码中,多次使用 Calendar 类的 set(int field,int value) 方法来改变日期,从而获取用户查询的日期。该方法在日期操作方面比较常用,大家需要熟练掌握该方法。
这周一的日期为【2018-10-15】,与今天相差【0】天 请输入您要查询本周星期几的日期(1表示星期一,2表示星期二…): 1 本周【星期一】的日期为:2018-10-15
本文链接:http://task.lmcjl.com/news/10324.html