最近在项目中进行考勤打卡的模块的开发,中间的业务涉及到对某年某月的数据统计,特在此做出一个小结,高手可以忽略,不喜勿喷。
根据2020-11-23这种日期格式获取到这个月的日历,如果是过去的月份则返回整个月份的日历,如果是正在进行的月份,则返回日期截止到这个月最新的日期。
public class DateCountUtils {
public static void main(String[] args) {
// 2、打印出当前月份的工作日日期(条件来源:代码)
List<String> monthDay = getMonthFullDayWorkingDay("2020-11-05");
List<String> monthDay2 = getMonthFullDayWorkingDay("2020-12-02");
System.out.println(monthDay);
System.out.println(monthDay2);
}
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
/**
* 条件来源程序判断:
* 获取当前月份的所有日期
* @param date "2020-11-20"
* @return 如果是当前月,返回到当月截止今天的日期集合 如果是之前月返回之前月的日期集合
*
* 来源:https://www.cnblogs.com/jinzhiming/p/6224860.html
*/
public static List<String> getMonthFullDayWorkingDay(String date) {
List<String> fullDayList = new ArrayList<String>();
int year = Integer.parseInt(date.substring(0, 4));
int month = Integer.parseInt(date.substring(5, 7));
int day = 1;// 所有月份从1号开始
Calendar cal = Calendar.getInstance();// 获得当前日期对象