1.
/**
分析以下需求,并用代码实现:
(1)通过键盘录入日期字符串,格式(2015-10-20)
(2)输出该日期是星期几及这一年的第几天
(3)如输入:2015-10-20,输出"2015年-10月-20日 是 星期二,是 2015年的第 293 天"
* @throws ParseException
*/
@Test
public void work5() throws ParseException {
System.out.println("输入日期(格式:2015-10-20):");
Scanner sc =new Scanner(System.in);
String t=sc.next();
//获得指定格式对象
SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd");
//将字符串解析为Date数据类型
Date d1=s.parse(t);
//将d1转换成Calendar
Calendar ca=Calendar.getInstance();
ca.clear();
//date转换成calendar类型
ca.setTime(d1);
//年月日指定格式输出
SimpleDateFormat s1=new SimpleDateFormat("yyyy年-MM月-dd日");
//Date类型转变成字符串
String t1=s1.format(d1);
System.out.println(t1);
//获得第几天
int x=ca.get(Calendar.DAY_OF_WEEK);
if(x==1){
System.out.println("是星期日");
}
if(x==2){
System.out.println("是星期一");
}
if(x==3){
System.out.println("是星期二");
}
if(x==4){
System.out.println("是星期三");
}
if(x==5){
System.out.println("是星期四");
}
if(x==6){
System.out.println("是星期五");
}
if(x==7){
System.out.println("是星期六");
}
System.out.println("是"+ca.get(Calendar.YEAR)+"的第"+ca.get(Calendar.DAY_OF_YEAR)+"天");
}
2控制台输出
@Test
public void work2(){
Calendar c=Calendar.getInstance();
System.out.println("请输入年月日 (格式:2001-12-25):");
Scanner sc=new Scanner(System.in);
String a=sc.next();
String []a1=a.split("-");
int year=Integer.parseInt(a1[0]);
int month=Integer.parseInt(a1[1])-1;
int date=Integer.parseInt(a1[2]);
c.set(year, month, 1);
System.out.println("日\t一\t二\t三\t四\t五\t六");
System.out.println();
//判断1号是本周第几天,打印空格数
int k=c.get(Calendar.DAY_OF_WEEK);
for(int i=0;i<k-1;i++){
System.out.print("\t");
}
//打印日期
//getActualMaximum()获取当月的天数
for (int j = 1; j <=c.getActualMaximum(Calendar.DAY_OF_MONTH); j++) {
//从第一天开始打印
c.set(year, month, j);
System.out.print(j+"\t");
//是星期六就打印换行
if(c.get(Calendar.DAY_OF_WEEK)==7){
System.out.println("\n");
}
Date d=new Date();
//打印当天的*号
if(j+1==date){
System.out.print("*");
}
}
}
运用到的代码在注释中标示