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());
}