今天項目里面寫到一個日歷小控件,要求按月進行變化顯示。如下所示:

所以研究了一下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));Caledar有的add()和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 表示該字段值的 變化的量 如:字段如果是月,value值為3 ,就表示設置月份為3月。set()源碼:
public void set(int field,int value)-field 被改變的字段-value 該值被直接賦值與上面的日歷字段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號這就是我的第一篇博客了,寫一下感覺還是有些用處的。第一次寫,沒有經驗,水平也有限,希望各位博友多多指教。
新聞熱點
疑難解答