本案例实现键盘输入自定义年月日,自动获取该日期的具体信息。
用到的知识点:
接口、语句控制、字符串/日期时间处理、单例模式、IO、线程等。
目录
全量代码
package com.wl.ms.demo;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Scanner;
public class YearMonthDay {
public static void main(String[] args) {
Outer2 outer = OuterImpl2.getInstance();
while(true){
String str = outer.shuru();
outer.dayParse(str);
outer.xinqi(str);
}
}
}
interface Outer2 {
public String shuru();
public void dayParse(String str);
public void xinqi(String str);
}
class OuterImpl2 implements Outer2 {
/*
* YearMonthDay (non-Javadoc)
*
* @see com.wl.ms.demo.Outer#panduan(int)
*
*/
//创建实例
private static OuterImpl2 newInstance = new OuterImpl2();
public static OuterImpl2 getInstance(){
return newInstance;
}
private OuterImpl2(){}
@Override
public void xinqi(String str) {
String s[] = str.split("-");
int sYear = Integer.parseInt(s[0]);
int sMonth = Integer.parseInt(s[1]);
int sDay = Integer.parseInt(s[2]);
SimpleDateFormat sdf = new SimpleDateFormat("dd MM yyyy");
java.util.Date date = null;
try {
date = sdf.parse(sDay+" "+sMonth+" "+sYear);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int weekDay = calendar.get(Calendar.DAY_OF_WEEK);
switch (weekDay) {
case 1:
System.out.println(" 星期天");
break;
case 2:
System.out.println(" 星期一");
break;
case 3:
System.out.println(" 星期二");
break;
case 4:
System.out.println(" 星期三");
break;
case 5:
System.out.println(" 星期四");
break;
case 6:
System.out.println(" 星期五");
break;
case 7:
System.out.println(" 星期六");
break;
default:
break;
}
}
@Override
public void dayParse(String str) {
int day = 0;
int days=0;
String s[] = str.split("-");
int sYear = Integer.parseInt(s[0]);
int sMonth = Integer.parseInt(s[1]);
int sDay = Integer.parseInt(s[2]);
for (int i = 1; i < sMonth; i++) {
switch (i) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: {
day = 31;
break;
}
case 4:
case 6:
case 9:
case 11: {
day = 30;
break;
}
case 2:
if ((sYear % 4 == 0)) {
day=29;
}else{
day=28;
}
default:
break;
}
days = day+days;
}
days = days+sDay;
System.out.print("您好,这是"+sYear+"年的第"+days+"天 ");
}
@Override
public String shuru() {
int e = 0;
String str = "";
Scanner sc = new Scanner(System.in);
do {
System.out.println("请输入年份:");
int year = sc.nextInt();
System.out.println("请输入月份:");
int month = sc.nextInt();
System.out.println("请输入天:");
int day = sc.nextInt();
str = year + "-" + month + "-" + day;
if (year > 0 && month > 0 && month <= 12 && day > 0 && day < 31) {
System.out.println("您输入的日期是:" + str + ",请稍等,结果马上出来...");
try {
Thread.sleep(1000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
e = 1;
return str;
} else {
try {
throw new Exception("您输入的日期有误,请重新输入!");
} catch (Exception e1) {
e1.printStackTrace();
}
e = 0;
// return null;
}
} while (e == 1);
return str;
}
}
效果
请输入年份:
2019
请输入月份:
9
请输入天:
20
您输入的日期是:2019-9-20,请稍等,结果马上出来...
您好,这是2019年的第263天 星期五
请输入年份: