最近做项目有涉及需要获取指定日期或当前日期所在月份和周第一和最后一天,结合网上的资料和自己项目开发记录,记录下用到的这些方法。
目录
1.获取指定年份的第一天和最后一天
2. 获取指定日期月份第一天和最后一天
3.获取指定日期所在周的周一和周日
4.获取昨天、明天、及前N天、后N天
1.获取指定年份的第一天和最后一天
/*** 获取指定年份的第一天和最后一天***/SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Calendar calendarMonth =Calendar.getInstance();calendarMonth.setTime(new Date()); //修改成需要的日期calendarMonth.add(Calendar.YEAR, 0); // -1表示去年,0表示今年,1表示明年月,上下年份以此类型calendarMonth.set(Calendar.DAY_OF_YEAR, calendarMonth.getActualMinimum(Calendar.DAY_OF_YEAR));System.out.println(">>>> 第一天" + sdf.format(calendarMonth.getTime()));calendarMonth.set(Calendar.DAY_OF_YEAR, calendarMonth.getActualMaximum(Calendar.DAY_OF_YEAR));System.out.println(">>>> 最后一天 " + sdf.format(calendarMonth.getTime()));
2. 获取指定日期月份第一天和最后一天
/*** 获取日期所在月度的第一天和最后一天*/SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Calendar calendarMonth =Calendar.getInstance();calendarMonth.setTime(new Date()); //修改成需要的日期calendarMonth.add(Calendar.MONTH, 0); // -1表示上个月,0表示本月,1表示下个月,上下月份以此类型calendarMonth.set(Calendar.DAY_OF_MONTH, calendarMonth.getActualMinimum(Calendar.DAY_OF_MONTH));System.out.println("上月第一天:" + sdf.format(calendarMonth.getTime()));calendarMonth.set(Calendar.DAY_OF_MONTH, calendarMonth.getActualMaximum(Calendar.DAY_OF_MONTH));System.out.println("上月最后一天:" + sdf.format(calendarMonth.getTime()));
calendarMonth.add(Calendar.MONTH, 0); // -1表示上个月,0表示本月,1表示下个月,上下月份以此类型
3.获取指定日期所在周的周一和周日
/*** 获取日期所在周的第一天和最后一天*/Calendar calendarWeek =Calendar.getInstance();calendarWeek.setTime(new Date());calendarWeek.add(Calendar.DATE, 0 * 7); // 0 表示当前周,-1 表示上周,1 表示下周,以此类推calendarWeek.setFirstDayOfWeek(Calendar.MONDAY); //以周一为首日calendarWeek.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);System.out.println("日期所在周第一天:" + sdf.format(calendarWeek.getTime()));calendarWeek.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);System.out.println("日期所在周最一天:" + sdf.format(calendarWeek.getTime()));
calendarWeek.add(Calendar.DATE, 0 * 7); // 0 表示当前周,-1 表示上周,1 表示下周,以此类推
4.获取昨天、明天、及前N天、后N天
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date date = sdf.parse("-02-02");Calendar calendar = Calendar.getInstance();calendar.setTime(date); //改成你要获取的那个月份里面的任意一天//获取指定时间所在月份的第一天calendar.add(Calendar.DATE,-1);//-1 表示往前一天,往前N天,只需把 -1 改成你要的天数System.out.println("获取昨天:" + sdf.format(calendar.getTime()));//获取指定时间所在月份的最后一天calendar.add(Calendar.DATE,1);//1 表示往后一天,往后N天,只需把 1 改成你要的天数System.out.println("获取明天:" + sdf.format(calendar.getTime()));
注意calendar.add(Calendar.DATE,-1); 这行代码,-1表示往前一天,1 表示往后一天,往前/后 N 天 只需要把 -1/1 改成你要的天数即可。
如果觉得《使用Calendar类获取指定日期所在年/月份 周第一天 最后一天》对你有帮助,请点赞、收藏,并留下你的观点哦!