使用GregorianCalendar模拟实现查看当前月的日历

  本次实验在于测试日期类的一些方法的使用,通常我们会使用Calendar调用getInstance()方法创建对象,
这里也可以使用Calendar的子类 GregorianCalendar类去创建,在这里,模拟实现了,通过运行该代码段,就
能知道今天是几月的几号的星期几了,不多说啦,直接上代码...

import
java.text.SimpleDateFormat; import java.util.Calendar; import java.util.GregorianCalendar; //import java.util.Locale; //import java.text.DateFormatSymbols; /** * 测试用于模拟手机日历,该程序用于———显示当前月的日历 * * @author YYCat * */ public class TestImitateCalendar { public static void main(String[] args){ // // Locale.setDefault(Locale.CHINESE); GregorianCalendar calendar = new GregorianCalendar(); //创建格里高利日历对象 /** * 输出样例eg:2015年7月 */ SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月"); System.out.println(" " + sdf.format(calendar.getTime())); /** * 获得当前月、日 */ int month = calendar.get(Calendar.MONTH) + 1; int today = calendar.get(Calendar.DAY_OF_MONTH); //获得今天是在这个月的第几天 /** * 注: * 打印今天是星期几?的时候注意地区差异 * System.out.println(day=1?7:day-1); */ // int w = calendar.get(Calendar.DAY_OF_WEEK)-1; // int weekday = calendar.get(Calendar.DAY_OF_WEEK) -1; //表示这一天为星期几 //System.out.println("month: " + month); //System.out.println("today: " + today); /** * 返回到本月到第一天,并得到这一天为星期几。 * * 获得这个月的第一天在该月中是星期几,便于计算空格 */ calendar.set(Calendar.DAY_OF_MONTH, 1); int weekday = calendar.get(Calendar.DAY_OF_WEEK); //today = calendar.get(Calendar.DAY_OF_MONTH); //System.out.println("today:" + today); int firstdayOfWeek = calendar.getFirstDayOfWeek(); //System.out.println("weekday: " + weekday); //System.out.println("firstdayOfWeek:" + firstdayOfWeek); /** * 以下功能实现 */ int indent = 0; //该标示用于表示:本月的一天前的空位,准确定位到具体的那个星期上 /** * 当本月的第一天不为星期天 时,则 * 移动计算该天距第一天的位置 */ while(firstdayOfWeek!=weekday){ indent++; calendar.add(Calendar.DAY_OF_MONTH, -1); // /* today = calendar.get(Calendar.DAY_OF_MONTH); System.out.println("today:" + today); 居然是30 29 28... */ weekday = calendar.get(Calendar.DAY_OF_WEEK); //老是忘掉了减一....目的是将这一天向前移动一天 } //System.out.println(indent); //定义一个现实星期的数组 String[] week = {"日","一", "二", "三", "四", "五", "六"}; for(int i=0; i<week.length; i++){//打印星期标题 System.out.printf("%15s",week[i]); } System.out.println(); // String[] week = new DateFormatSymbols().getShortWeekdays(); do{ // System.out.printf("%6s", week[weekday+1]); //使用printf("%s", )可以指定空格大小,这尼玛下标... //System.out.println(weekday); calendar.add(Calendar.DAY_OF_MONTH, 1); weekday = calendar.get(Calendar.DAY_OF_WEEK); }while(weekday!=firstdayOfWeek); //System.out.println("firstdayOfWeek:" + firstdayOfWeek); for(int i=0; i<indent; i++){ System.out.print(" "); } calendar.set(Calendar.DAY_OF_MONTH, 1); weekday = calendar.get(Calendar.DAY_OF_WEEK); //System.out.println(indent); /** * 接下来准备好将日期数与对应的星期数对应上 * * 利用while循环:(month!=calendar.get(Calendar.MONTH)) * */ while(month==(calendar.get(Calendar.MONTH)+1)){ int day = calendar.get(Calendar.DAY_OF_MONTH); //获得该天 if(weekday == firstdayOfWeek){ // System.out.println("wed:" + weekday); System.out.println(); } //如果是今天的话,在该天数后加个标记# if(day==today){ System.out.printf("%6s", day+"#"); }else{ System.out.printf("%6s", day); } // System.out.print("wed:" + weekday); //如果到周六,自动换行 calendar.add(Calendar.DAY_OF_MONTH, 1); //天数+1 weekday = calendar.get(Calendar.DAY_OF_WEEK); } } }

运行效果如图:


参考自java Core,接下来我将会把实现模拟时钟功能的代码段继续奉献给大家
 

 

转载于:https://www.cnblogs.com/YYCat/p/4697127.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值