根據參數或當前月,獲取本月第一個工作日
文章目錄
- 根據參數或當前月,獲取本月第一個工作日
- 前言
- 一、根據當前日期獲取當前月的第一個工作日
- 二、根據參數日期,獲取參數月的第一個工作日。
- 總結
前言
這里我們列舉兩個方法:
1、沒有參數,根據當前日期取當前月的第一個工作日;
2、根據參數日期,獲取參數月的第一個工作日。
提示:以下是本篇文章正文內容,下面案例可供參考
一、根據當前日期獲取當前月的第一個工作日
import java.text.SimpleDateFormat;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.temporal.TemporalAdjusters;
import java.util.*;public static String getFirstWorkday(){Calendar cal = Calendar.getInstance();// 獲取當前日期cal.add(Calendar.MONTH, 0);cal.set(Calendar.DAY_OF_MONTH, 1);//設置為1號,當前日期既為本月第一天int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);//huo獲取星期幾,1代表星期日,2代表星期一,以此類推// 如果當前日期是周六或周日,則取下個周一,否則為當前日期if (dayOfWeek == Calendar.SATURDAY || dayOfWeek == Calendar.SUNDAY) {LocalDate localDate = cal.getTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();LocalDate firstWorkday = localDate.with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY));return firstWorkday.toString();}return new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());
}
二、根據參數日期,獲取參數月的第一個工作日。
import java.text.SimpleDateFormat;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.temporal.TemporalAdjusters;
import java.util.*;public static String getFirstWorkday(Date date){Calendar cal = Calendar.getInstance();// 獲取當前日期cal.setTime(date);cal.add(Calendar.MONTH, 0);cal.set(Calendar.DAY_OF_MONTH, 1);//設置為1號,當前日期既為本月第一天int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);//huo獲取星期幾,1代表星期日,2代表星期一,以此類推// 如果當前日期是周六或周日,則取下個周一,否則為當前日期if (dayOfWeek == Calendar.SATURDAY || dayOfWeek == Calendar.SUNDAY) {LocalDate localDate = cal.getTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();LocalDate firstWorkday = localDate.with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY));return firstWorkday.toString();}return new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());
}
總結
以上就是今天要講的內容,需要注意的是,必須判斷當月第一天是否為工作日,如果直接使用if中的方法獲取本月第一個工作日,有可能會獲取到下周的第一個工作日。