Java基础-练习:日历打印
//业务思想最重要,知道自己想要完成什么样的业务,才能逐步的完成业务功能
public class CalendarTest {
	  //打印当月的日历,掌握这个知识点后,可以很方便的制作一年的年历
	  public static void main(String[] args) {
		    //第一步:打印头部信息
		    System.out.printf("今天的日期是:%tF %<tA,当前月份的日历如下:\n", new Date());
		    System.out.println("------------------------------------------------------");
		    System.out.println(" 日\t 一\t 二\t 三\t 四\t 五\t 六");
		    System.out.println("------------------------------------------------------");
		    //第二步:初始化一些信息
		    //生成一个日历对象
		    Calendar dt = new GregorianCalendar();
		    int month = dt.get(Calendar.MONTH);//获取当月时间
		    dt.set(Calendar.DAY_OF_MONTH, 1);//定位到当月的第一天
		    int weekday = dt.get(Calendar.DAY_OF_WEEK);//当月第一天对应的星期数
		    //第三步:打印第一行里和星期对应的空格
		    for (int space = Calendar.SUNDAY; space < weekday; space++) {
			      System.out.print("\t");
		    }
		    //第四步:读取当月的每一天并打印
		    int m = dt.get(Calendar.MONTH);
		    //上面已经把日子定位到1号了;一直打印完本月所有天数,循环结束
		    for (dt.get(Calendar.DAY_OF_MONTH); m == month;) {
			      System.out.printf("%2d\t", dt.get(Calendar.DAY_OF_MONTH));
			      dt.add(Calendar.DAY_OF_MONTH, 1);//完成一次打印后,日子加一;
			      if (Calendar.SATURDAY == dt.get(Calendar.DAY_OF_WEEK)) {//遇到星期六
				        System.out.println();//换行打印
			      }
			      m = dt.get(Calendar.MONTH);//是否进入下一个月
		    }
	  }
}
======================下面是打印任一年的代码======================
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Scanner;
/**
 * 2016-5-8上午10:40:00
 * 
 */
//业务思想最重要,知道自己想要完成什么样的业务,才能逐步的完成业务功能
public class CalendarTest {
    public static void main(String[] args) {
        System.out.println("请输入任意年份,将自动生成年历");
        Scanner scanner = new Scanner(System.in);
        int year = scanner.nextInt();
        Calendar dt = new GregorianCalendar();
        dt.set(Calendar.YEAR, year);
        dt.set(Calendar.MONTH, 0);
        dt.set(Calendar.DAY_OF_MONTH, 1);
        for (int i = 0; i < 12; i++) {
            System.out.println();
            System.out.println("---------------------------------------------------");
            System.out.printf("\t\t\t%4d年%2d月\n", year, i + 1);
            System.out.println(" 日\t 一\t 二\t 三\t 四\t 五\t 六");
            for (int space = 1; space < dt.get(Calendar.DAY_OF_WEEK); space++) {//打印空格
                System.out.print("\t");
            }
            while (dt.get(Calendar.MONTH) == i) {
                System.out.printf("%2d\t", dt.get(Calendar.DAY_OF_MONTH));
                if (dt.get(Calendar.DAY_OF_WEEK) == 7) {//遇到星期六
                    System.out.println();//换行打印
                }
                dt.add(Calendar.DAY_OF_MONTH, 1);//完成打印后,日子加一;
            }
        }
    }
}
===================下面是求当天是当年中的第几天的代码===================
==============只做练习,其实可以直接用calendar.dayofyear获取================
import java.util.Calendar;
import java.util.GregorianCalendar;
/**
 * 2016-5-8上午09:54:06
 * 
 */
public class DayOfYear {
    public static void main(String[] args) {
        int i = 0;//存放天数
        Calendar gc = new GregorianCalendar();//获取日历
        System.out.println(gc.get(Calendar.DAY_OF_YEAR));//直接获取答案
        int month = gc.get(Calendar.MONTH);//今天所在月份
        int day = gc.get(Calendar.DAY_OF_MONTH);//今天是几号
        gc.set(Calendar.MONTH, 0);//将日历调整为1月份,日历中用0表示
        gc.set(Calendar.DAY_OF_MONTH, 1);//将日历中的日子调整为1号
        while (gc.get(Calendar.MONTH) < month) {//本月前的日子数
            i++;
            gc.add(Calendar.DAY_OF_MONTH, 1);
        }
        System.out.println(i + day);//通过计算得到的答案
    }
}
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号