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);//通过计算得到的答案
}
}