Java学习(5):显示自己电脑上的日期

import java.util.Calendar;
import java.util.GregorianCalendar;

/**
 * 输出自己电脑上的日期
 * @author xcx
 * @time 2017年7月11日下午6:13:21
 */
public class CalendarTest {
	// 每周的天数
	private static final int numbersOfWeek = 7;

	public static void main(String[] args) {
		// 初始化月份
		int[] months = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
		String[] weeks = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
		for (String s : weeks) {
			System.out.print(s + "	");
		}
		System.out.println();

		// 创建对象,得到信息
		GregorianCalendar d = new GregorianCalendar();

		// 得到这是哪一年
		int year = d.get(Calendar.YEAR);
		// 判断是否为闰年,如果flag为true则是闰年
		boolean flag = false;
		if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) {
			flag = true;
		}

		// 得到这一天是这个月的第几天
		int dayOfMonth = d.get(Calendar.DAY_OF_MONTH);
		// 得到这一天是周几
		int dayOfWeek = d.get(Calendar.DAY_OF_WEEK);
		// 得到这是第几个月
		int month = d.get(Calendar.MONTH) + 1;

		// 推理这个月的第一天是周几
		int temp = dayOfMonth;
		while (temp - numbersOfWeek > 0) {
			temp -= numbersOfWeek;
		}
		temp = dayOfWeek - temp;
		int firstOfMonth = (temp + numbersOfWeek) % numbersOfWeek;
		for (int i = 0; i < firstOfMonth; i++) {
			System.out.print("	");
		}
		// 打印输出结果
		printMonth(month, firstOfMonth, flag, dayOfMonth);

	}

	public static void printMonth(int month, int firstOfMonth, boolean flag,
			int dayOfMonth) {
		int temp = firstOfMonth;
		if (month == 2) {// 如果是二月
			if (flag == true) {// 如果是闰年
				for (int i = 1; i <= 29; i++, temp++) {
					if (i == dayOfMonth) {
						System.out.print(i + "*	");
					} else {
						System.out.print(i + "	");
					}

					if (temp % 7 == 6) {// 判断是否换行
						System.out.println();
					}
				}
			} else {// 如果不是闰年
				for (int i = 1; i <= 28; i++, temp++) {
					if (i == dayOfMonth) {
						System.out.print(i + "*	");
					} else {
						System.out.print(i + "	");
					}

					if (temp % 7 == 6) {// 判断是否换行
						System.out.println();
					}
				}
			}
		} else {// 如果不是二月
			if (String.valueOf(month).matches("(1|3|5|7|8|10|12)")) {// 判断这个月是否为31天
				for (int i = 1; i <= 31; i++, temp++) {
					if (i == dayOfMonth) {
						System.out.print(i + "*	");
					} else {
						System.out.print(i + "	");
					}

					if (temp % 7 == 6) {// 判断是否换行
						System.out.println();
					}
				}
			} else {
				for (int i = 1; i <= 30; i++, temp++) {
					if (i == dayOfMonth) {
						System.out.print(i + "*	");
					} else {
						System.out.print(i + "	");
					}

					if (temp % 7 == 6) {// 判断是否换行
						System.out.println();
					}
				}
			}
		}

	}
}

  显示结果:

posted on 2017-07-11 20:45  xcxfury  阅读(148)  评论(0编辑  收藏  举报

导航