Java 输入一个日期,然后输出该月份

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

public class CalendarWork {
	
	public static void printCalendar(Date theday){
		
		int maxday = 0;
		int firstday = 0;
		int currentday = 0;
		
//		创建一个日期对象,并设置时间
		Calendar c = new GregorianCalendar();
		c.setTime(theday);
		//获取这个日期的月份的天数
		maxday = c.getActualMaximum(c.DATE);
		//获取这个日期
		currentday = c.get(c.DATE);
		//获取这个月的第一天的星期数
		c.set(c.DATE,1);
		firstday = c.get(c.DAY_OF_WEEK);
		
		System.out.println("一\t二\t三\t四\t五\t六\t日\n");
		
		if(firstday > 1){
			for(int i = 1; i < firstday - 1; i++){
//				Calendar.SUNDAY = 1 Calendar.MONDAY = 2
//				Calendar.TUESDAY = 3 Calendar.WEDNESDAY = 4
//				Calendar.THURSDAY = 5 Calendar.FRIDAY = 6
//				Calendar.SATURDAY = 7
				System.out.print("\t");
			}
		}else{
			int k = 1;
			while(k < (8 - firstday)){
				System.out.print("\t");
				k++;
			}
		}
		
		
		
		for(int j = 1; j <= maxday; j++){
			//判断日期是否与输入的日期相同,相同添加一个#标记
			if(j == currentday){
				System.out.print("#");
			}
			System.out.print(j + "\t");
			//判断星期,按照七天一行换行!
			if(((j + (firstday - 2)) % 7) == 0){	
				System.out.println();
			}
		}
		System.out.println();
		
		
	}
	
	public static void main(String[] args) {
		
	k://标记
		while(true){
			
			System.out.println("请输入一个日期(2017-12-27): ");
			Scanner sc = new Scanner(System.in);
			String str = sc.nextLine();
			
			String strs[] = str.split("-");
			
			int[] date = new int[strs.length];
			for(int i = 0; i < strs.length; i++){
				date[i] = Integer.parseInt(strs[i]);
			}
			//date[0]是年,date[1]是月,date[2]是日
			if(date[1] < 1 || date[1] > 12){
				System.out.println("请输入正确的月份(1-12):");
				continue k;
			}
			
			if(date[1] == 2){
				//判断是否是闰年
				if(date[0] % 4 == 0 && date[0] % 100 != 0 
						|| date[0] % 400 == 0){
					if(date[2] < 1 || date[2] >29){
						System.out.println("请输入正确的日期(1-29)");
						continue k;
					}
				}else{
					if(date[2] < 1 || date[2] >28){
						System.out.println("请输入正确的日期(1-28)");
						continue k;
					}
				}
			}else{
				if(date[1] == 4 || date[1] == 6 || date[1] == 9
						|| date[1] == 11)
				{
					if(date[2] < 1 || date[2] >30){
						System.out.println("请输入正确的日期(1-30)");
						continue k;
				}
				}else{
					if(date[2] < 1 || date[2] >31){
						System.out.println("请输入正确的日期(1-31)");
						continue k;
					}
				}
			}
			
		
		try {
			
			DateFormat df = new SimpleDateFormat("yy-MM-dd");
			Date theday = df.parse(str);
			//调用方法输出日期
			printCalendar(theday);
			
			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
			
		}
		
	
	}
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值