Java入门第101课——Calendar调用set方法设置日期分量

码字不易,请大家关注公众号,转发,点赞,只需动动手指,不要钱,谢谢了老铁!

问题

    在上一案例的基础上,使用Calendar类的set方法设置日期-时间的各个分量,详细要求如下:

    1)使用Calendar类表示时间,设置日期为2013年12月25日,时间为此时此刻的时间,并将该日期-时间转换为Date类输出。

    2)修改Calendar类的对象,将日期中的日设置为32,其余不变,然后将该日期-时间日期转换为Date类输出。

方案

    使用Calendar类的set方法设置日期时间的各个分量,该方法声明如下:

void set(int field,int value)

    该方法表示将给定的日历字段设置为给定值。该方法需要一个int类型的field参数,field是Calendar类的静态字段,如Calendar.YEAR、Calendar.MONTH等分别代表了年、月、日、小时、分钟、秒等时间字段。

步骤

    实现此案例需要按照如下步骤进行。

步骤一:添加测试方法

    在TestCalendar类中添加测试方法testSet,代码如下所示:

    package day03;
    
    import java.util.Calendar;
    import java.util.GregorianCalendar;
    import org.junit.Test;
    
    public class TestCalendar{
     /**
      *测试set方法
      */
      @Test
      public void testSet(){
      
      }
    }

步骤二:使用Calendar类的set方法设置日期分量

    首先,通过Calendar类的getInstance方法获取当前日期-时间;然后,使用set方法将日期改变为2013年12月25日,并将Calendar表示的时间转换为Date表示的时间输出到控制台,代码如下所示:

    package day03;
    
    import java.util.Calendar;
    import java.util.GregorianCalendar;
    import org.junit.Test;
    
    public class TestCalendar{
     /**
      *测试set方法
      */
      @Test
      public void testSet(){
          Calendar c=Calendar.getInstance();
          c.set(Calendar.YEAR,2013);
          c.set(Calendar.MONTH,Calendar.DECEMBER);
          c.set(Calendar.DATE,25);
          System.out.println(c.getTime());//Wed Des 25 16:45:01 CST 2013
      }
    }

步骤三:运行   

    运行testSet方法,控制台输出结果为:

    Wed Dec 25 14:53:53 CST 2013

    从输出结果可以看出已经将日期设置为2013年12月25日,时间为当前时间。

步骤四:将步骤二中的对象c的日设置为32

    使用set方法将步骤二中的对象c的"日"设置为32,并将Calendar表示的日期-时间转换为Date表示的日期-时间输出到控制台,代码如下所示:

    package day03;
    
    import java.util.Calendar;
    import java.util.GregorianCalendar;
    import org.junit.Test;
    
    public class TestCalendar{
     /**
      *测试set方法
      */
      @Test
      public void testSet(){
          Calendar c=Calendar.getInstance();
          c.set(Calendar.YEAR,2013);
          c.set(Calendar.MONTH,Calendar.DECEMBER);
          c.set(Calendar.DATE,25);
          System.out.println(c.getTime());//Wed Des 25 16:45:01 CST 2013
          
          //实际日期值为1月1日
          c.set(Calendar.DATE,32);
          System.out.println(c.getTime());//Wed Jan 01 16:45:01 CST 2014
      }
    }

步骤五:运行

    运行testSet方法,控制台输出结果为:

    Wed Dec 25 14:53:53 CST 2013
    Wed Jan 01 14:53:53 CST 2014

    可以看出将日设置为32后,日期变化2014年1月1日,这是因为,当被修改的字段超出它允许的范围时,会发生进位,即上一级字段会变大。在本案例中,将日设置为32后,但是,2013年12月只有31天,超出了日允许的范围,因此发生进位,变为1月1日。

关注公众号,获取学习视频

发布了139 篇原创文章 · 获赞 82 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/houjunkang363/article/details/102579754