SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar c = Calendar.getInstance(); System.out.println(sdf.format(c.getTime())); c.add(Calendar.DAY_OF_YEAR, -1); System.out.println(sdf.format(c.getTime())); c.set(2018, 12, 20);// 月份是从0开始的,所以11表示12月 c.add(Calendar.YEAR, -1); // 年份减1 c.add(Calendar.YEAR, +1); // 年份加1 c.add(Calendar.MONTH, -1);// 月份减1 c.add(Calendar.DATE, -1);// 日期减1 c.set(Calendar.HOUR, 1);//设置时为 13点 c.set(Calendar.MINUTE, 45);//设置分为 45 c.set(Calendar.SECOND, 30);//设置 秒为30 System.out.println(sdf.format(c.getTime()));
set(int field, int value) - 是用来设置"年/月/日/小时/分钟/秒/微秒"等值
add(int field, int amount) add 可以对 Calendar 的字段进行计算。如果需要减去值,那么使用负数值就可以了,如 add(field, -value)。 可以自动修正
/** * 取指定时间的日期(只剩年月日),把时分秒置0 * @param date * @return */ public static final Date getCurrentDay(Date date) { Calendar lastDate = Calendar.getInstance(); lastDate.setTime(date); int yearInt = lastDate.get(Calendar.YEAR); int monthInt = lastDate.get(Calendar.MONTH); int dateInt = lastDate.get(Calendar.DATE); lastDate.set(5, 1); lastDate.set(Calendar.YEAR, yearInt); lastDate.set(Calendar.MONTH, monthInt); lastDate.set(Calendar.DATE , dateInt); lastDate.set(Calendar.HOUR_OF_DAY, 0); lastDate.set(Calendar.MINUTE, 0); lastDate.set(Calendar.SECOND, 0); lastDate.set(Calendar.MILLISECOND, 0); return lastDate.getTime(); }