java打印日历

代码:

package com.sjx.test1;
import java.text.DateFormatSymbols;
import java.util.*;
/**
 * @version 1.0 
 * @author sjx
 */

public class Graph {
    public static void main(String[] args)
    {
        Locale.setDefault(Locale.US); //在java.util.locale包下,如果不加它,显示的就是星期几,而不是sun,sat之类的,中文是locale.CHINESE或者CHINA
        GregorianCalendar d = new GregorianCalendar();
         int today = d.get(Calendar.DAY_OF_MONTH);
         int month = d.get(Calendar.MONTH);
         
         d.set(Calendar.DAY_OF_MONTH, 1);
         
         int weekday = d.get(Calendar.DAY_OF_WEEK);
         
         int firstDayOfWeek = d.getFirstDayOfWeek();
         
         int indent = 0;
         while(weekday!=firstDayOfWeek)
         {
             indent++;
             d.add(Calendar.DAY_OF_MONTH, -1);
             weekday = d.get(Calendar.DAY_OF_WEEK);
         }
         
         String [] weekdayNames = new DateFormatSymbols().getShortWeekdays();
         do
         {
             System.out.printf("%4s", weekdayNames[weekday]);
             d.add(Calendar.DAY_OF_MONTH, 1);
             weekday = d.get(Calendar.DAY_OF_WEEK);
         }while(weekday!=firstDayOfWeek);
         
         System.out.println();
         for(int i = 1; i<=indent; i++)
         System.out.print("    ");
         
         d.set(Calendar.DAY_OF_MONTH, 1);
         do
         {
             int day = d.get(Calendar.DAY_OF_MONTH);
             System.out.printf("%3d", day);
             
             if(day==today) System.out.print("*");
             else System.out.print(" ");
             
             d.add(Calendar.DAY_OF_MONTH, 1);
             weekday = d.get(Calendar.DAY_OF_WEEK);
             
             if(weekday==firstDayOfWeek)
                 System.out.println();
         }while(d.get(Calendar.MONTH)==month);
         
         if(weekday!=firstDayOfWeek) System.out.println();
    }
}

效果:

原文地址:https://www.cnblogs.com/sjxbg/p/5980323.html