在日常项目中,经常会遇到需要在当前日期加上特定的天数作为新的日期,比如:
- 会员充值
- N天之前的日期
- …
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String nowDateString = "2019-05-06 13:34:25";
System.out.println("当前时间为:" + nowDateString);
try {
Date sourceDate = sdf.parse(nowDateString);
Calendar calendar = Calendar.getInstance();
calendar.setTime(sourceDate);
calendar.add(Calendar.DATE,-5);
Date targetDate = calendar.getTime();
System.out.println("减去5天后的日期:"+sdf.format(targetDate));
} catch (ParseException e) {
e.printStackTrace();
}
}
附Calendar 字段说明
YEAR 当前年份
MONTH 当前月份( 注:初始值是从0开始,所以得到的比实际月份小1月)
DATE 一个月中的某天
WEEK_OF_YEAR 当前年中的第几个星期
WEEK_OF_MONTH 当前月中的第几个星期
DAY_OF_MONTH 一个月中的第几天
DAY_OF_YEAR 一年中的第几天
DAY_OF_WEEK 一个星期中的第几天
DAY_OF_WEEK_IN_MONTH 当前月中的第几个星期(注:当前月第1-7天是第一个星期,8-14是第二个星期,以此类推)
HOUR_OF_DAY 一天中的第几个小时
MINUTE 一小时中的第几分钟
SECOND 一分钟中的第几秒
MILLISECOND 一秒中的第几毫秒
!!!特别提醒
calendar.add(Calendar.DAY_OF_MONTH,1);
calendar.add(Calendar.DAY_OF_YEAR,1);
calendar.add(Calendar.DATE,1);
这几行代码返回的结果是一样的,都是将日期+1
就没有区别说是在月的日期中加1还是年的日期中加1
但是Calendar设置DAY_OF_MONTH和DAY_OF_YEAR的目的不是用来+1
将日期加1,这通过cal1.add(Calendar.DATE,1)就可以实现
DAY_OF_MONTH的主要作用是cal.get(DAY_OF_MONTH),用来获得这一天在是这个月的第多少天
Calendar.DAY_OF_YEAR的主要作用是cal.get(DAY_OF_YEAR),用来获得这一天在是这个年的第多少天。
同样,还有DAY_OF_WEEK,用来获得当前日期是一周的第几天