A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Demomiku 中级黑马   /  2015-5-3 20:50  /  341 人查看  /  0 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

代码:
  1. package test;

  2. import java.util.*;
  3. import java.text.DateFormatSymbols;
  4. /**
  5. * @author Demomiku E-mail: 448902872@qq.com
  6. * @date 创建时间:2015年5月3日 下午8:28:14
  7. * @version 1.0   
  8. */

  9. public class MyCalendar
  10. {

  11.         public static void main(String[] args)
  12.         {
  13.                  
  14.               GregorianCalendar d = new GregorianCalendar();
  15.              
  16.               //获得今天是这几月的第几天,这个月是几月,获得的月份是实际月份-1,因为从0开始
  17.               int today = d.get(Calendar.DAY_OF_MONTH);
  18.               int month = d.get(Calendar.MONTH);

  19.               //设置日期为这个月第一天
  20.               d.set(Calendar.DAY_OF_MONTH, 1);
  21.              
  22.               //获取第一天是一个星期的第几天
  23.               int weekday = d.get(Calendar.DAY_OF_WEEK);

  24.               //获得一个星期的第一天
  25.               int firstDayOfWeek = d.getFirstDayOfWeek();

  26.               //日历开头空格的计数
  27.               int indent = 0;
  28.               while (weekday != firstDayOfWeek)
  29.               {
  30.                  indent++;
  31.                  d.add(Calendar.DAY_OF_MONTH, -1);
  32.                  weekday = d.get(Calendar.DAY_OF_WEEK);
  33.               }

  34.               //日历第一行输出星期的缩写
  35.               String[] weekdayNames = new DateFormatSymbols().getShortWeekdays();
  36.               do
  37.               {
  38.                  System.out.printf("%4s", weekdayNames[weekday]);
  39.                  d.add(Calendar.DAY_OF_MONTH, 1);
  40.                  weekday = d.get(Calendar.DAY_OF_WEEK);
  41.               }
  42.               while (weekday != firstDayOfWeek);
  43.               System.out.println();

  44.               for (int i = 1; i <= indent; i++)
  45.                  System.out.print("    ");

  46.               d.set(Calendar.DAY_OF_MONTH, 1);
  47.               do
  48.               {
  49.                       //打印日期
  50.                  int day = d.get(Calendar.DAY_OF_MONTH);
  51.                  System.out.printf("%3d", day);

  52.                  //在今天的后面加上"*"
  53.                  if (day == today) System.out.print("*");
  54.                  else System.out.print(" ");

  55.                  // 将日期+1
  56.                  d.add(Calendar.DAY_OF_MONTH, 1);
  57.                  weekday = d.get(Calendar.DAY_OF_WEEK);

  58.                  // 如果这天是一个星期的第一天则换行
  59.                  if (weekday == firstDayOfWeek) System.out.println();
  60.               }
  61.               while (d.get(Calendar.MONTH) == month);
  62.               // 如果判断到是下个月了则结束循环

  63.              
  64.               if (weekday != firstDayOfWeek) System.out.println();
  65.         }

  66. }
复制代码

截图:

1.PNG (2.57 KB, 下载次数: 8)

日历

日历

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马