//查找一段时间内的工作日
public static List<String> findWorkDate(String beginDate, String endDate)
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
List lDate = findAllDates(beginDate, endDate);
List result = new ArrayList();
for (Iterator iterator = lDate.iterator(); iterator.hasNext(); )
{
String sdate = (String)iterator.next();
if (!isWeekend(sdate, sdf))
{
result.add(sdate);
}
}
return result;
}
//查找一段时间内的所有日期
public static List<String> findAllDates(String beginDate, String endDate)
{
List lDate = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date dBegin = sdf.parse(beginDate);
Date dEnd = sdf.parse(endDate);
lDate = new ArrayList();
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
lDate.add(sd.format(dBegin));
Calendar calBegin = Calendar.getInstance();
calBegin.setTime(dBegin);
Calendar calEnd = Calendar.getInstance();
calEnd.setTime(dEnd);
while (dEnd.after(calBegin.getTime()))
{
calBegin.add(5, 1);
lDate.add(sd.format(calBegin.getTime()));
}
} catch (ParseException e) {
e.printStackTrace();
}
return lDate;
}
//查找从现在开始第几周周末的日期
public static String getNexWeekEndDay(SimpleDateFormat sdf, int i)
{
Calendar calendar1 = Calendar.getInstance();
calendar1.setFirstDayOfWeek(2);
int dayOfWeek = calendar1.get(7);
if (1 == dayOfWeek) {
calendar1.add(5, -1);
}
int day = calendar1.get(7);
calendar1.add(5, 7 * i);
calendar1.add(5, calendar1.getFirstDayOfWeek() - day);
calendar1.add(5, 6);
String endDate = sdf.format(calendar1.getTime());
return endDate;
}
//查找从现在开始第几周周一的日期
public static String getLastWeekBeginDay(SimpleDateFormat sdf, int n)
{
String beginDate = getFromToDate(sdf, new Date(), n, 0, 0);
return beginDate;
}
public static String getFromToDate(SimpleDateFormat sdf, Date date, int n, int option, int k)
{
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int dayOfWeek = calendar.get(7) - 1;
int offset = option == 0 ? 1 - dayOfWeek : 7 - dayOfWeek;
int amount = option == 0 ? offset - (n - 1 + k) * 7 : offset - k * 7;
calendar.add(5, amount);
return sdf.format(calendar.getTime());
}
//查找时间段
public static String getNWeekTimeInterval(int n, SimpleDateFormat sdf)
{
String beginDate = getFromToDate(sdf, new Date(), n, 0, 0);
String endDate = getFromToDate(sdf, new Date(), n, 1, 0);
return beginDate + "," + endDate;
}
//查找时间段
public static String getNWeekTimeIntervalTwo(int n, SimpleDateFormat sdf)
{
String beginDate = getFromToDate(sdf, new Date(), n, 0, 1);
String endDate = getFromToDate(sdf, new Date(), n, 1, 1);
return beginDate + "," + endDate;
}
//查找本周时间段
public static String getThisWeekTimeInterval(SimpleDateFormat sdf)
{
return getNWeekTimeInterval(1, sdf);
}
//查找工作日
public static String getWeekDays(int i)
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar1 = Calendar.getInstance();
calendar1.setFirstDayOfWeek(2);
int dayOfWeek = calendar1.get(7);
if (1 == dayOfWeek) {
calendar1.add(5, -1);
}
int day = calendar1.get(7);
calendar1.add(5, 7 * i);
calendar1.add(5, calendar1.getFirstDayOfWeek() - day);
String beginDate = sdf.format(calendar1.getTime());
calendar1.add(5, 6);
String endDate = sdf.format(calendar1.getTime());
return beginDate + "," + endDate;
}
public static String getLastWeekTimeInterval(SimpleDateFormat sdf)
{
return getNWeekTimeIntervalTwo(1, sdf);
}
public static boolean isWeekend(String sdate, SimpleDateFormat sdf)
{
boolean flag = false;
try {
Date date = sdf.parse(sdate);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
if ((cal.get(7) == 7) || (cal.get(7) == 1))
flag = true;
}
catch (ParseException e) {
e.printStackTrace();
}
return flag;
}
public static boolean isHoliday(String sdate, List<String> list)
throws ParseException
{
if (list.size() > 0) {
for (int i = 0; i < list.size(); i++) {
if (sdate.equals(list.get(i))) {
return true;
}
}
}
return false;
}
public static String getNexDay(String dateStr)
{
Calendar c = Calendar.getInstance();
Date date = null;
String nextDay = "";
try {
date = new SimpleDateFormat("yy-MM-dd").parse(dateStr);
c.setTime(date);
int day = c.get(5);
c.set(5, day + 1);
nextDay = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
} catch (ParseException e) {
e.printStackTrace();
}
return nextDay;
}
public static String getNexDay(String dateStr, int n)
{
Calendar c = Calendar.getInstance();
Date date = null;
String nextDay = "";
try {
date = new SimpleDateFormat("yy-MM-dd").parse(dateStr);
c.setTime(date);
int day = c.get(5);
c.set(5, day + n);
nextDay = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
} catch (ParseException e) {
e.printStackTrace();
}
return nextDay;
}
public static String getPreDay(String dateStr, int n)
{
Calendar c = Calendar.getInstance();
Date date = null;
String nextDay = "";
try {
date = new SimpleDateFormat("yy-MM-dd").parse(dateStr);
c.setTime(date);
int day = c.get(5);
c.set(5, day - n);
nextDay = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
} catch (ParseException e) {
e.printStackTrace();
}
return nextDay;
}
日历工具类
最新推荐文章于 2023-03-04 11:14:37 发布