java里GregorianCalendar类的应用

GregorianCalendar类可以用来表示大家熟悉的日历表示法(即今天是本月里这个星期的星期几,是这个月的几号等),事实上,GregorianCalendar类扩展了一个更加通用的Calender类,这个类描述了类的一般属性,例如,使用该类获得当前月和当前是星期几的代码示例:

GregorianCalendar now=new GregorianCalendar();
Int month=now.get(Calendar.MONTH);
Int weekday=now.get(Calendar.DAY_OF_WEEK);

同时,调用set方法也可以改变对象状态,即设置年或月或日

now.set(Calendar.YEAR,2001);//将now对象的年份设置为2001年
now.set(Calendar.MONTH,Calendar.APRIL);//将now对象的月份设置为4月
now.set(Calendar.DAY_OF_MONTH,15);//将当前的日期(即今天的日期)设置为本月的第15天
也可以用另一种方法设置日期对象:

now.set(2001,Calendar.APRIL,15);

同时,还可以为给定的日期对象增加天数,星期数,月份等,

now.set(Calendar.MONTH,3)//将now的月份数往后移三个月,如果为12月则移动后为3月

注意:如果传递的数值是一个负数,日期就向后移

 

下面用一个应用GregorianCalendar类的程序来实现其应用,这个程序将显示当前月的日历,其格式为:

 

(当前的日用一个*号标记)

具体程序参见以下源代码:

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设置为这个月的第一天
d.set(Calendar.DAY_OF_MONTH, 1);
int weekday=d.get(Calendar.DAY_OF_WEEK);
//获得当前月的第一个星期的星期天的标号,将其标号为firstDayOfWeek(美国历法中间星期天设置为一个星期的第一天)
int firstDayOfWeek=d.getFirstDayOfWeek();
//获取这个月的第一天对应的星期与firstDayOfWeek之间的偏移量
int counter=0;
while(weekday!=firstDayOfWeek)
{
counter++;
d.add(Calendar.DAY_OF_MONTH, -1);
weekday=d.get(Calendar.DAY_OF_WEEK);
}
//打印出星期的缩写
String[] weekdayNames=new DateFormatSymbols().getShortWeekdays();
do{
System.out.printf("%3s",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=0;i<counter;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向后移动
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();
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值