当前位置:回答三>百科知识>calendar add和set的区别

calendar add和set的区别

2024-07-26 15:07:53 编辑:join 浏览量:560

calendar add和set的区别

Calendar类的set()和add()方法对日期的变化有些不同:

具体实现如下:

set():单纯的设定日期,如果设定的日期不存在的话,他会向下移动。

Add():它移动的是日期的偏移量。

例如:

set : 2009/07/31 3个月前的日期是 :

2009/05/01

add : 2009/07/31 3个月前的日期是 :

2009/04/30

代码实现如下:

static String getDateEndOfPeriod( String

dateBefore,int period ){

Calendar cld =

Calendar.getInstance();

String dateAfter = "";

if( dateBefore == null ||

dateBefore.length()==0){

return

null;

}

String year =

dateBefore.substring(0,4);

String month =

dateBefore.substring(4,6);

String day =

dateBefore.substring(6,8);

//开始日カレンダー

cld.clear();

cld.setLenient(true);

cld.set( Calendar.YEAR,

Integer.valueOf(year).intValue() );

cld.set( Calendar.MONTH,

Integer.valueOf(month).intValue() - 1);

cld.set( Calendar.DATE,

Integer.valueOf(day).intValue());

//このメソッドには偏移量の移动、结果的に2009/07/31--3ヶ月前--->2009/04/30

cld.add(Calendar.MONTH,

-period);

//単纯にセットしているので日付ない日には次の日を移动する、结果的に2009/07/31--3ヶ月前--->2009/05/01

// cld.set( Calendar.MONTH,

Integer.valueOf(month).intValue() - 1 - period);

int mon =

cld.get(Calendar.MONTH) + 1;

int dy =

cld.get(Calendar.DATE);

dateAfter =

String.valueOf(cld.get(Calendar.YEAR)) +

( mon

< 10 ? "0" + String.valueOf(mon) :

String.valueOf(mon) ) +

( dy

< 10 ? "0" + String.valueOf(dy) : String.valueOf(dy)

);

return dateAfter;

}

标签:calendar,add,set

版权声明:文章由 回答三 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.huidasan.com/article/186061.html
热门文章