根据年和月得到打印出当月的日历

package org.crazybird.learn.objectandclass;

import java.util.GregorianCalendar;
import java.util.Scanner;

import com.sun.org.apache.bcel.internal.classfile.JavaClass;

public class Calendar {
 
 
 public static void drawCalendar(){
  Scanner sca = new Scanner(System.in);
  System.out.println("请输入想得到的年份:");
  int year = sca.nextInt();
  System.out.println("请输入想得到的月份:");
  int month2 = sca.nextInt();
  
  //期望的日历对象
  GregorianCalendar d = new GregorianCalendar(year,month2,0);
  
  //当前的日历对象
  GregorianCalendar gc = new GregorianCalendar();
  
  int today = gc.get(java.util.Calendar.DAY_OF_MONTH);//得到当前的日期
  int monthToday = gc.get(java.util.Calendar.MONTH);//得到当前的月份
  int month = d.get(java.util.Calendar.MONTH);//得到期望日期的月份
  
  //给期望日期设置一个月的第一天
  d.set(java.util.Calendar.DAY_OF_MONTH, 1);
  //获得期望月份的第一天是一周中的第几天
  int weekday = d.get(java.util.Calendar.DAY_OF_WEEK);
  
  //打印日历头
  System.out.println("Sun\tMon\tTue\tWed\tFou\tFri\tSat");
  
  //制作日历第一行的缩进
  for(int i = java.util.Calendar.SUNDAY ; i < weekday ; i++){
   System.out.print("\t");
   if(i == weekday-1){
    do{
     //打印日子
     int day = d.get(java.util.Calendar.DAY_OF_MONTH);
     System.out.printf("%3d",day);
     //用*号标记当天日期
     if(day == today && month == monthToday){
      System.out.print("*\t");
     }else{
      System.out.print("\t");
     }
     //每当周六另起一行
     if(weekday == java.util.Calendar.SATURDAY){
      System.out.println();
     }
     //增加一天得到第二天
     d.add(java.util.Calendar.DAY_OF_MONTH, 1);
     
     //重新获得改天在一周中的位置
     weekday = d.get(java.util.Calendar.DAY_OF_WEEK);
    }while(d.get(java.util.Calendar.MONTH) == month);
    //当打印完日期项以后跳出for循环
    break;
   }
  }
 }
 public static void main(String[] args) {
  drawCalendar();
 }
}

你可能感兴趣的:(日历)