黑马程序员技术交流社区

标题: 编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输... [打印本页]

作者: lyz942698    时间: 2015-6-12 17:52
标题: 编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输...
用两种方法实现了一下,请大家多多指教,看哪种方法更好一些。
方法一:

  1. import java.text.ParseException;
  2. import java.text.SimpleDateFormat;
  3. import java.util.Date;
  4. import java.util.Scanner;

  5. public class Test9 {
  6.         public static void main(String[] args) {
  7.                 @SuppressWarnings("resource")
  8.                 Scanner input = new Scanner(System.in);
  9.                 System.out.println("请输入一个日期:");
  10.                 SimpleDateFormat formatYMD = new SimpleDateFormat("yyyy-MM-dd");
  11.                 String strdate = input.next();
  12.                 System.out.println(getWeekDay(strdate));
  13.                 Date date = null;
  14.                 try {
  15.                         date = formatYMD.parse(strdate);
  16.                         System.out.println(isWhatDate(date));
  17.                 } catch (ParseException e) {
  18.                         e.printStackTrace();
  19.                 }

  20.         }

  21.         // 获取周
  22.         public static String getWeekDay(String dateStr) {
  23.                 SimpleDateFormat formatYMD = new SimpleDateFormat("yyyy-MM-dd");
  24.                 SimpleDateFormat formatD = new SimpleDateFormat("E");
  25.                 Date date = null;
  26.                 String weekDay = "";
  27.                 try {
  28.                         date = formatYMD.parse(dateStr);
  29.                         weekDay = formatD.format(date);
  30.                 } catch (Exception e) {
  31.                         e.printStackTrace();
  32.                 }
  33.                 return weekDay;
  34.         }

  35.         // 获取天
  36.         public static int isWhatDate(Date date) {
  37.                 int dateSum = 0;
  38.                 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  39.                 String dateStr = format.format(date);
  40.                 int year = Integer.valueOf(dateStr.substring(0, 4));
  41.                 int month = Integer.valueOf(dateStr.substring(5, 7));
  42.                 int day = Integer.valueOf(dateStr.substring(8, 10));
  43.                 for (int i = 1; i < month; i++) {
  44.                         switch (i) {
  45.                         case 1:
  46.                         case 3:
  47.                         case 5:
  48.                         case 7:
  49.                         case 8:
  50.                         case 10:
  51.                         case 12:
  52.                                 dateSum += 31;
  53.                                 break;
  54.                         case 4:
  55.                         case 6:
  56.                         case 9:
  57.                         case 11:
  58.                                 dateSum += 30;
  59.                                 break;
  60.                         case 2:
  61.                                 if (((year % 4 == 0) & (year % 100 != 0)) | (year % 400 == 0)) {
  62.                                         dateSum += 29;
  63.                                 } else {
  64.                                         dateSum += 28;
  65.                                 }
  66.                         }
  67.                 }
  68.                 return dateSum = dateSum + day;
  69.         }

  70. }
复制代码
方法二:
  1. import java.text.ParseException;
  2. import java.text.SimpleDateFormat;
  3. import java.util.Calendar;
  4. import java.util.Scanner;

  5. public class Test9 {
  6.         public static void main(String[] args) {
  7.                 System.out.print("请按“yyyy-MM-dd”的格式输入一个日期:");
  8.                 @SuppressWarnings("resource")
  9.                 Scanner input = new Scanner(System.in);
  10.                 String date=input.nextLine();
  11.                 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
  12.                 Calendar calendar = Calendar.getInstance();
  13.                 try {
  14.                         calendar.setTime(dateFormat.parse(date));
  15.                 } catch (ParseException e) {
  16.                         // TODO Auto-generated catch block
  17.                         e.printStackTrace();
  18.                 }
  19.                 //calendar.add(Calendar.MONTH, 1);       
  20.                 int a = calendar.get(Calendar.DAY_OF_YEAR);
  21.                 int b = calendar.get(Calendar.DAY_OF_WEEK);
  22.                 System.out.print("这一天是");
  23.                 switch(b){
  24.                 case 1:System.out.print("星期日");
  25.                        break;
  26.                 case 2:System.out.print("星期一");
  27.                break;
  28.                 case 3:System.out.print("星期二");
  29.                break;
  30.                 case 4:System.out.print("星期三");
  31.                break;
  32.                 case 5:System.out.print("星期四");
  33.                break;
  34.                 case 6:System.out.print("星期五");
  35.                break;
  36.                 case 7:System.out.print("星期六");
  37.                break;
  38.                        
  39.                 }
  40.                 System.out.println(",是一年中的第"+a+"天");
  41.                
  42.         }
  43. }
复制代码




作者: java8023    时间: 2015-6-12 20:04
两种方法都不是很精简啊,代码那么多啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2