Calendar、SimpleDateFormat、date类的综合运用

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("*");
			}			
		}	
	}

在这里插入图片描述
运用到的代码在注释中标示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值