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();
}
}
}
}
}
}
显示结果:

浙公网安备 33010602011771号