VisualCalendar---可视化日历

问题1:
如何从控制台输入一个字符串,然后变成日期

  Scanner scanner = new  Scanner(System.in);
  String temp =scanner.nextLine();
  //创建一个格式器
  DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
   try {
    //利用格式器创建一个日期
    Date date = format.parse(temp);
    //创建日历对象
    Calendar calendar = new GregorianCalendar();
    //再把日期放进日历中去
    calendar.setTime(date);

问题2:
如何获取该月共有多少天?

int dayCount=calendar.getActualMaximum(calendar.DATE);

问题三:
如何知道该月的第一天是星期几,对应的数值是多少?

   //把给定的天数设置为该月第一天
  calendar.set(Calendar.DAY_OF_MONTH, 1);
  //获取该月第一天是星期几
  int day_of_week = calendar.get(Calendar.DAY_OF_WEEK); //某月一号是星期几

问题四:
如何控制前面的空格

  //System.out.println(day_of_week); 4 说明要占3格
   for(int i=1;i<day_of_week;i++){
    System.out.print("\t");
    }

问题五:
如何进行逢周六换行

   //还有最后一个问题,就是逢周六换行
  int w = calendar.get(Calendar.DAY_OF_WEEK);//1号对应的星期几
  if(w==Calendar.SATURDAY){
  System.out.println();
 }

问题六:
之前把日期设为1号,但是我们的日期要递增才行,不然w永远都是1号

//还要把该月一号加1
calendar.add(Calendar.DATE, 1);

具体代码如下:

 package cn.hejiaming.test;
 import java.util.Date;
 import java.text.DateFormat;
 import java.text.DateFormatSymbols;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.GregorianCalendar;
 import java.util.Scanner;
   /**
   * 作用:制作一个万年历,并了解年月日相关数据的获取和设置
   * @author Administrator
     *
     */
 public class CalendarTest {

   public static void main(String[] args) {
    System.out.println("请输入查询的日期,格式如“2012-03-23” ");
    Scanner scanner = new  Scanner(System.in);
    String temp =scanner.nextLine();
   //String temp = "2012-12-03";
    //创建一个格式器
    DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  
      try {
    //利用格式器创建一个日期
    Date date = format.parse(temp);
    
    //创建日历对象
    Calendar calendar = new GregorianCalendar();
    //再把日期放进日历中去
    calendar.setTime(date);
    
    //获取今天是几号
    int today = calendar.get(Calendar.DAY_OF_MONTH);
    System.out.println("日\t一\t二\t三\t四\t五\t六");
    
    //先利用这些东西构建自己的思路,以免想法太多一步登天太难
    //      for(int i=1;i<31;i++){
   //           System.out.print(i+"\t");
   //           if(i%7==0){
   //               System.out.println();
   //           }
   //       }
    
    //把给定的天数设置为该月第一天
    calendar.set(Calendar.DAY_OF_MONTH, 1);
    //获取该月第一天是星期几
    int day_of_week = calendar.get(Calendar.DAY_OF_WEEK); //某月一号是星期几
    //System.out.println(today); 4 说明要占3格
    for(int i=1;i<day_of_week;i++){
        System.out.print("\t");
    }
    
    //算出该月有多少天
    //System.out.println(calendar.getActualMaximum(calendar.DATE));
    int    dayCount=calendar.getActualMaximum(calendar.DATE);
    for(int i=1;i<dayCount;i++){
        
        //还有一个功能,在该月标注今天是几号
            if(i==today){
            System.out.print("*");
        }
        System.out.print(i+"\t");
        //还有最后一个问题,就是逢周六换行
        int w = calendar.get(Calendar.DAY_OF_WEEK);
        if(w==Calendar.SATURDAY){
            System.out.println();
        }
        //还要把该月一号加1
        calendar.add(Calendar.DATE, 1);
    }
    
   } catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
    
   }

   }

总结一下:

  • 刚想这个日历的时候就觉得很麻烦,首先是字符串日期的转换问题
  • 其他不会的问题都在上面提出了
  • 心得:
    • 没有任何头绪的要先把问题想简单,一步一步的实现
    • 然后再具体化,细节化
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值