calendar 类 用法

add()和roll()区别

一、Calendar 月份从 0-11,要表示8月,应该传入7 .
二、set() 会自动转换为合法的日期,如 set(1999,8,31)  表示的是1999-09-31,9月没有31,应该为1999-10-1 
三、得搞清楚 add 与 roll区别
 1、add() 有两条规则:
 a)当被修改的字段超出它可以的范围时,那么比它大的字段会自动修正。
 b)如果比它小的字段是不可变的(由 Calendar 的实现类决定),那么该小字段会修正到变化最小的值。
 2、Roll() 的规则只有第二条
  当被修改的字段超出它可以的范围时,那么比它大的字段不会被修正。

获取当前时间

 public static void main(String[] args) {

Calendar cal = Calendar.getInstance();  

  int curr_month=cal.get(Calendar.MONTH)+1;

  int curr_year=cal.get(Calendar.YEAR);

  int curr_day=cal.get(Calendar.DAY_OF_MONTH);

  System.out.println(curr_day+"-"+curr_month+"-"+curr_year);

}

public static void main(String[] args) throws ParseException {
        SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd");
        Date beginDate = new Date();
        Calendar date = Calendar.getInstance();
        date.setTime(beginDate);
        date.set(Calendar.DATE, date.get(Calendar.DATE) - 1);
        Date endDate = dft.parse(dft.format(date.getTime()));
        System.out.println(dft.format(endDate));
        //System.out.println(endDate.toLocaleString());
    }

public static void main(String[] args) throws ParseException {
        SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd");
        Date beginDate = new Date();
        Calendar date = Calendar.getInstance();
        date.setTime(beginDate);
        date.set(Calendar.DATE, date.get(Calendar.DATE) - 1);
        Date endDate = dft.parse(dft.format(date.getTime()));      //将string转data类型  format格式日期
        System.out.println(dft.format(endDate));
        date.add(Calendar.DAY_OF_MONTH, -1);
        date.add(Calendar.MONTH, -3);
        System.out.println(date.get(Calendar.DAY_OF_MONTH));
        System.out.println(date.get(Calendar.MONTH));
        //System.out.println(endDate.toLocaleString());
    }

原文地址:https://www.cnblogs.com/baijin05/p/5050925.html