Calendar的add和set方法的运用和区别

#终于下决心写博客
最近感觉有些堕落,想学点东西也学不进去,所以下定决心写点博客,希望能够进行一些技术积累!
今天项目里面写到一个日历小控件,要求按月进行变化显示。如下所示:

这里写图片描述

所以研究了一下Calendar,实现方法如下:

	Calendar calendar = Calendar.getInstance();
    calendar.setTime(new Date());
    // 重点是下面这句, “-1”表示时间减一个月 若想按年修改只需将第一个参数修改为Calendar.YEAR,
    // 确定好第一个参数后,只需按需修改第二个参数就可以实现日期的增减。区别于set();
    calendar.add(Calendar.MONTH, -1);//在当前日期上 减一
    Date newTime = calendar.getTime();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月");//将日期格式化xxxx年xx月的样式
    tv_date.setText(sdf.format(newTime));

Calendar的 add()set() 方法很有用处,下面举一个 set() 的例子,如获取当月第一天的方法:

    SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.DAY_OF_MONTH,1);//第二个参数设置为1,设置当前日期为本月1号
    String firstDay = sdf.format(calendar.getTime());
    textview.setText(firstDay)

add()源码:

    public abstract void add(int field, int value);
    -第一个参数 field 表示日历字段 即:年 月 日
    -第二个参数 value 表示该字段值的 变化的量
    如:field如果是月,value值为3 ,就表示当前日期加上3个月。

set()源码:

	public void set(int field,int value)
	-field 被改变的字段
	-value 该值被直接赋值与上面的日历字段
	如:field如果是日,value值为1 ,就表示设置当前日期为1号。

set((int field, int value))方法区别于add(int field, int value),set()有好几个重载的方法,这里只说和add()同参的。

    -set 表示直接设值 不考虑原来的时间值
    -add 表示在原有的基础上进行加减value
   
    calendar.add(Calendar.DAY_OF_MONTH, 2);//表示在默认的当前日期上加两天
    calendar.set(Calendar.DAY_OF_MONTH,2);//表示直接将日期设置为本月2号

这就是我的第一篇博客了,写一下感觉还是有些用处的。第一次写,没有经验,水平也有限,希望各位博友多多指教。

你可能感兴趣的:(Android)