使用java编程完成一个日历
要求:输出一份当前所在时区当前时间的一个月的日历(1号到28/29/30/31号,以及每天对应为星期几)。
java源程序:
import java.text.DateFormatSymbols;//导入 DateFormatSymbols类
import java.util.*;//导入java.util下的所以的类
public class test5//类名
{
public static void main(String[] args)//主程序方法
{
//Locale.setDefault(Locale.ENGLISH);//设置语言环境
GregorianCalendar d = new GregorianCalendar();// construct d as current date构造一个日期
//获取今天是这个月的第几天
int month = d.get(Calendar.MONTH); //用于循环打印当前月份的月历__月份判断
int today = d.get(Calendar.DAY_OF_MONTH); //用于给当前日期后面加"*",Calendar.DAY_OF_MONTH作为参数调用,得到今天是这个月的第几天
String weekdays[] = new DateFormatSymbols().getShortWeekdays(); //保存7个星期名 ,获取简短形式的星期字符串数组
for(int i=1; i<8; ++i)
System.out.print(weekdays[i]+" "); //打印月历头部,7个星期名
System.out.println();//换行
d.set(Calendar.DAY_OF_MONTH, 1); //设置d的日期为当月1号
int weeknameofFirstday = d.get(Calendar.DAY_OF_WEEK);//获得当月1号的星期名 ,获取当天位于本星期的第几天,也就确定了星期几,值的范围是1-7
//System.out.print(weeknameofFirstday);
int cnt = 1;
while(weekdays[cnt] != weekdays[weeknameofFirstday]) //打印日历第一行,判断当月1号从第一行的哪里开始打印
{
System.out.print(" ");
++cnt;
}
//实现日期输入
//d.set(Calendar.MONTH, month);
//d.set(Calendar.DAY_OF_MONTH, 1);
do
{
int day = d.get(Calendar.DAY_OF_MONTH);
System.out.printf("%3s", day);//格式化字符串
if(day == today)
System.out.print("*");
else
System.out.print(" ");
if(weekdays[d.get(Calendar.DAY_OF_WEEK)] == weekdays[7]) //判断是否需要换行打印
System.out.println();
d.add(Calendar.DAY_OF_MONTH, 1);//天数加1
}while(d.get(Calendar.MONTH) == month);
}
}
试验结果:
注:实验结果中标记星号的即为当前月的几号