输入一个日期,在控制台输出日历

演示代码

Calendar比较难理解的误区:可以看这篇文章->Calendar最大最难理解的误区

/**
 * 
 */
package com.liangrui.javebase;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;

/**
 * @author liangrui
 * @date 2020年1月10日 上午12:28:17
 * @version 1.0.0
 * @description 输入一个日期,在控制台输出日历
 */
public class DateToCalendar {

	public static void main(String[] args) throws ParseException {
		System.out.println("请输入日期(格式:2020-9-10):");
		Scanner scanner=new Scanner(System.in);
		//输入字符串格式 的日期
		String dateString=scanner.nextLine();
		
		DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");
		//将字符串格式日期转换成日期格式
		Date date=dateFormat.parse(dateString);
		
		//创建日历
		Calendar calendar=new GregorianCalendar();
		//将日期加入日历
		calendar.setTime(date);
		
		//获取输入日期在该月的天数
		int day=calendar.get(Calendar.DAY_OF_MONTH);
		//获取输入日期月的总天数
		int days=calendar.getActualMaximum(Calendar.DATE);

		//输出星期
		System.out.println("日\t一\t二\t三\t四\t五\t六");
		
		//设置当前天为这个月的1号
		calendar.set(Calendar.DAY_OF_MONTH, 1);
		
		//查看输入日期为星期几,从而遍历输出日历1号前面的空白
		for (int i = 0; i < calendar.get(Calendar.DAY_OF_WEEK)-1; i++) {
			System.out.print("\t");
		}
		
		//遍历月份,输出日历
		for (int i = 1; i <= days; i++) {
			//如果遍历的日子为输入的日子
			if (day==calendar.get(Calendar.DAY_OF_MONTH)) {
				System.out.print(calendar.get(Calendar.DAY_OF_MONTH)+"*\t");
			}else {
				System.out.print(calendar.get(Calendar.DAY_OF_MONTH)+"\t");
			}
			
			//到达周六换行
			if (calendar.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY) {
				System.out.println();
			}
			
			//日期+1天
			calendar.add(Calendar.DAY_OF_MONTH, 1);
		}
		

	}

}

运行结果:

在这里插入图片描述

和电脑日历显示是一模一样的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值