import java.text.DateFormatSymbols;
import java.util.*;public class CalendarTest
{
public static void main(String[] args)
{
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("%5s",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();
}
}
import java.util.*;public class CalendarTest
{
public static void main(String[] args)
{
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("%5s",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();
}
}
打印日历关键的就是看这个月的第一天是周几,这个月的天数,然后周六换行,这些可以通过GregorianCalendar 的对象很容易的获得,程序里的一些代码跟属性看名字也能把他们意思猜个差不多吧,看不懂的就要查帮助文档了
有什么不懂这个直接查API就能明白。
搞java的一定要学会查API。
不懂的话再看一遍,还不懂 再看一遍书。
class GregorianCalendarGetSet
{
public static void main(String[] args)
{
/*
GregorianCalendar now = new GregorianCalendar();
int month = now.get(Calendar.MONTH);
int weekday = now.get(Calendar.DAY_OF_WEEK);
System.out.println("month:"+month+" weekday:"+weekday);//输出6,7
Date hireDay = now.getTime();
//System.out.println(hireDay);
now.setTime(hireDay);
int year = now.get(Calendar.YEAR);
System.out.println(year);
*/ 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);//设置d为这个月的第一天
int weekday = d.get(Calendar.DAY_OF_WEEK);//得到这个月的第一天是星期几 4 System.out.println(" 日 一 二 三 四 五 六");
for(int i=Calendar.SUNDAY;i<weekday;i++)//SUNDAY是 1 -- 1,2,3
//根据得到这个月的第一天是星期几(weekday)在输出之前打印出相应个数的空格
System.out.print(" ");
do{
int day = d.get(Calendar.DAY_OF_MONTH);//得到这个月的第一天代码22行
System.out.printf("%4d",day);//1
if(day == today){
System.out.print("*");
}else{
System.out.print(" ");
}
if(weekday ==Calendar.SATURDAY){//当这一天等于星期六时 换行
System.out.println();
}
d.add(Calendar.DAY_OF_MONTH,1);//将d设置下一天
weekday = d.get(Calendar.DAY_OF_WEEK);//得到下一天是星期几
}while(d.get(Calendar.MONTH)==month);//当是下一个月的时候结束。。
}
}
/*
weekday来控制换行,month控制程序结速,today判断是否加上*号
day打印出 几号
add将d设置成下一天*/
while(weekday != firstDayOfWeek)
{
indent++;
d.add(Calendar.DAY_OF_MONTH,-1);
weekday = d.get(Calendar.DAY_OF_WEEK);
System.out.println(d.get(Calendar.DAY_OF_MONTH));
System.out.println(weekday);
}
这里输出来的怎么是这样的
30
4
29
3
28
2
27
1
这个我就有点不懂了
应该输出的东西都是上一个月的。你仔细看看逻辑,不行的话每一个设定得值都输出,看和你理解的有什么区别。