• 使用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,接下来我将会把实现模拟时钟功能的代码段继续奉献给大家
     
  • 相关阅读:
    Silverlight C# 游戏开发:Flyer05与什么什么进行搏斗
    Silverlight C# 游戏开发:Flyer07做一个有开始的游戏
    Silverlight C# 游戏开发:面向对象在游戏中的实例(一)
    Silverlight C# 游戏开发:面向对象在游戏中的实例(二)
    Silverlight C# 游戏开发:Flyer06小小的改进让游戏更有趣
    linux网络命令ip\route\links回顾
    Google Style的C++编码规范
    TCP/IP协议和IP组播的视频传输
    Multicast server and client in Python
    用户profile中umask码的含义详解(默认是022)
  • 原文地址:https://www.cnblogs.com/YYCat/p/4697127.html
Copyright © 2020-2023  润新知