jsp中,获取工作日的方法?
发布网友
发布时间:2022-05-07 09:47
我来回答
共2个回答
热心网友
时间:2023-10-24 16:02
这里要计算工作日,其实没有什么大的难点,难就难在这里规定了法定假日放假三天,春节也是。五一和十一就比较容易只要判断月日就可以了,春节是阴历的1月1日,这个阴历怎么个算法呢?这里我倒是搞不懂了,不知道怎么解决,唉,用了比较笨的方法。看我代码吧:
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
public class testDate {
public static void main(String[] args) {
// TODO Auto-generated method stub
testDate td = new testDate();
td.showTime("2006-01-01","2006-03-01");
}
/**
* 显示工作日
* @param date1
* @param date2
*/
public void showTime(String date1,String date2){
// 这里要判断第二个参数日期要比第一个参数日期大先继续运行
GregorianCalendar gc = new GregorianCalendar();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat holidaysdf=new SimpleDateFormat("MM-dd");
//工作日
int workDay=0;
try {
Date d1 = sdf.parse(date1);
Date d2 = sdf.parse(date2);
gc.setTime(d1);
// System.out.println(sdf2.format(d1));
long time = d2.getTime() - d1.getTime();
long day = time/3600000/24 + 1;
// System.out.println(day);
for(int i=0;i<day;i++){
if (gc.get(GregorianCalendar.DAY_OF_WEEK)!= GregorianCalendar.SATURDAY &&
gc.get(GregorianCalendar.DAY_OF_WEEK)!= GregorianCalendar.SUNDAY) {
// System.out.println(holidaysdf.format(gc.getTime()));
if(!holidayList(holidaysdf.format(gc.getTime())) && !holidayOfCN(sdf.format(gc.getTime())))
workDay++;
}
//天数加1
gc.add(gc.DATE,1);
}
// gc.add(gc.DATE,1);
// System.out.println(sdf.format(gc.getTime()));
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(workDay);
}
//春节放假三天,定义到2020年
public boolean holidayOfCN(String year){
List ls = new ArrayList();
ls.add("2005-02-09");ls.add("2005-02-10");ls.add("2005-02-11");
ls.add("2006-01-29");ls.add("2006-01-30");ls.add("2006-01-31");
ls.add("2007-02-18");ls.add("2007-02-19");ls.add("2007-02-21");
ls.add("2008-02-07");ls.add("2008-02-08");ls.add("2008-02-09");
ls.add("2009-01-26");ls.add("2009-01-27");ls.add("2009-01-28");
ls.add("2010-02-14");ls.add("2010-02-15");ls.add("2010-02-16");
ls.add("2011-02-03");ls.add("2011-02-04");ls.add("2011-02-05");
ls.add("2012-01-23");ls.add("2012-01-24");ls.add("2012-01-25");
ls.add("2013-02-10");ls.add("2013-02-11");ls.add("2013-02-12");
ls.add("2014-01-31");ls.add("2014-02-01");ls.add("2014-02-02");
ls.add("2015-02-19");ls.add("2015-02-20");ls.add("2015-02-21");
ls.add("2006-02-08");ls.add("2006-02-09");ls.add("2006-02-10");
ls.add("2017-01-28");ls.add("2017-01-29");ls.add("2017-01-30");
ls.add("2018-02-16");ls.add("2018-02-17");ls.add("2018-02-18");
ls.add("2019-02-05");ls.add("2019-02-06");ls.add("2019-02-07");
ls.add("2020-01-25");ls.add("2020-01-26");ls.add("2020-01-27");
if(ls.contains(year))
return true;
return false;
}
//法定假日,五一和国庆
public boolean holidayList(String findDate){
List ls = new ArrayList();
ls.add("05-01");
ls.add("05-02");
ls.add("05-03");
ls.add("10-01");
ls.add("10-02");
ls.add("10-03");
if(ls.contains(findDate))
return true;
return false;
}
}
热心网友
时间:2023-10-24 16:03
这个是调用calculateTheWorkDate这个方法,有2个参数DateTime.Instance().getCurrentTime(1)和service.getCn_yb()。
想知道怎么获取,看calculateTheWorkDate这个方法代码。
你不贴出来calculateTheWorkDate里面的内容,谁知道怎么获取的。
热心网友
时间:2023-10-24 16:02
这里要计算工作日,其实没有什么大的难点,难就难在这里规定了法定假日放假三天,春节也是。五一和十一就比较容易只要判断月日就可以了,春节是阴历的1月1日,这个阴历怎么个算法呢?这里我倒是搞不懂了,不知道怎么解决,唉,用了比较笨的方法。看我代码吧:
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
public class testDate {
public static void main(String[] args) {
// TODO Auto-generated method stub
testDate td = new testDate();
td.showTime("2006-01-01","2006-03-01");
}
/**
* 显示工作日
* @param date1
* @param date2
*/
public void showTime(String date1,String date2){
// 这里要判断第二个参数日期要比第一个参数日期大先继续运行
GregorianCalendar gc = new GregorianCalendar();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat holidaysdf=new SimpleDateFormat("MM-dd");
//工作日
int workDay=0;
try {
Date d1 = sdf.parse(date1);
Date d2 = sdf.parse(date2);
gc.setTime(d1);
// System.out.println(sdf2.format(d1));
long time = d2.getTime() - d1.getTime();
long day = time/3600000/24 + 1;
// System.out.println(day);
for(int i=0;i<day;i++){
if (gc.get(GregorianCalendar.DAY_OF_WEEK)!= GregorianCalendar.SATURDAY &&
gc.get(GregorianCalendar.DAY_OF_WEEK)!= GregorianCalendar.SUNDAY) {
// System.out.println(holidaysdf.format(gc.getTime()));
if(!holidayList(holidaysdf.format(gc.getTime())) && !holidayOfCN(sdf.format(gc.getTime())))
workDay++;
}
//天数加1
gc.add(gc.DATE,1);
}
// gc.add(gc.DATE,1);
// System.out.println(sdf.format(gc.getTime()));
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(workDay);
}
//春节放假三天,定义到2020年
public boolean holidayOfCN(String year){
List ls = new ArrayList();
ls.add("2005-02-09");ls.add("2005-02-10");ls.add("2005-02-11");
ls.add("2006-01-29");ls.add("2006-01-30");ls.add("2006-01-31");
ls.add("2007-02-18");ls.add("2007-02-19");ls.add("2007-02-21");
ls.add("2008-02-07");ls.add("2008-02-08");ls.add("2008-02-09");
ls.add("2009-01-26");ls.add("2009-01-27");ls.add("2009-01-28");
ls.add("2010-02-14");ls.add("2010-02-15");ls.add("2010-02-16");
ls.add("2011-02-03");ls.add("2011-02-04");ls.add("2011-02-05");
ls.add("2012-01-23");ls.add("2012-01-24");ls.add("2012-01-25");
ls.add("2013-02-10");ls.add("2013-02-11");ls.add("2013-02-12");
ls.add("2014-01-31");ls.add("2014-02-01");ls.add("2014-02-02");
ls.add("2015-02-19");ls.add("2015-02-20");ls.add("2015-02-21");
ls.add("2006-02-08");ls.add("2006-02-09");ls.add("2006-02-10");
ls.add("2017-01-28");ls.add("2017-01-29");ls.add("2017-01-30");
ls.add("2018-02-16");ls.add("2018-02-17");ls.add("2018-02-18");
ls.add("2019-02-05");ls.add("2019-02-06");ls.add("2019-02-07");
ls.add("2020-01-25");ls.add("2020-01-26");ls.add("2020-01-27");
if(ls.contains(year))
return true;
return false;
}
//法定假日,五一和国庆
public boolean holidayList(String findDate){
List ls = new ArrayList();
ls.add("05-01");
ls.add("05-02");
ls.add("05-03");
ls.add("10-01");
ls.add("10-02");
ls.add("10-03");
if(ls.contains(findDate))
return true;
return false;
}
}
热心网友
时间:2023-10-24 16:03
这个是调用calculateTheWorkDate这个方法,有2个参数DateTime.Instance().getCurrentTime(1)和service.getCn_yb()。
想知道怎么获取,看calculateTheWorkDate这个方法代码。
你不贴出来calculateTheWorkDate里面的内容,谁知道怎么获取的。
热心网友
时间:2023-10-24 16:02
这里要计算工作日,其实没有什么大的难点,难就难在这里规定了法定假日放假三天,春节也是。五一和十一就比较容易只要判断月日就可以了,春节是阴历的1月1日,这个阴历怎么个算法呢?这里我倒是搞不懂了,不知道怎么解决,唉,用了比较笨的方法。看我代码吧:
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
public class testDate {
public static void main(String[] args) {
// TODO Auto-generated method stub
testDate td = new testDate();
td.showTime("2006-01-01","2006-03-01");
}
/**
* 显示工作日
* @param date1
* @param date2
*/
public void showTime(String date1,String date2){
// 这里要判断第二个参数日期要比第一个参数日期大先继续运行
GregorianCalendar gc = new GregorianCalendar();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat holidaysdf=new SimpleDateFormat("MM-dd");
//工作日
int workDay=0;
try {
Date d1 = sdf.parse(date1);
Date d2 = sdf.parse(date2);
gc.setTime(d1);
// System.out.println(sdf2.format(d1));
long time = d2.getTime() - d1.getTime();
long day = time/3600000/24 + 1;
// System.out.println(day);
for(int i=0;i<day;i++){
if (gc.get(GregorianCalendar.DAY_OF_WEEK)!= GregorianCalendar.SATURDAY &&
gc.get(GregorianCalendar.DAY_OF_WEEK)!= GregorianCalendar.SUNDAY) {
// System.out.println(holidaysdf.format(gc.getTime()));
if(!holidayList(holidaysdf.format(gc.getTime())) && !holidayOfCN(sdf.format(gc.getTime())))
workDay++;
}
//天数加1
gc.add(gc.DATE,1);
}
// gc.add(gc.DATE,1);
// System.out.println(sdf.format(gc.getTime()));
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(workDay);
}
//春节放假三天,定义到2020年
public boolean holidayOfCN(String year){
List ls = new ArrayList();
ls.add("2005-02-09");ls.add("2005-02-10");ls.add("2005-02-11");
ls.add("2006-01-29");ls.add("2006-01-30");ls.add("2006-01-31");
ls.add("2007-02-18");ls.add("2007-02-19");ls.add("2007-02-21");
ls.add("2008-02-07");ls.add("2008-02-08");ls.add("2008-02-09");
ls.add("2009-01-26");ls.add("2009-01-27");ls.add("2009-01-28");
ls.add("2010-02-14");ls.add("2010-02-15");ls.add("2010-02-16");
ls.add("2011-02-03");ls.add("2011-02-04");ls.add("2011-02-05");
ls.add("2012-01-23");ls.add("2012-01-24");ls.add("2012-01-25");
ls.add("2013-02-10");ls.add("2013-02-11");ls.add("2013-02-12");
ls.add("2014-01-31");ls.add("2014-02-01");ls.add("2014-02-02");
ls.add("2015-02-19");ls.add("2015-02-20");ls.add("2015-02-21");
ls.add("2006-02-08");ls.add("2006-02-09");ls.add("2006-02-10");
ls.add("2017-01-28");ls.add("2017-01-29");ls.add("2017-01-30");
ls.add("2018-02-16");ls.add("2018-02-17");ls.add("2018-02-18");
ls.add("2019-02-05");ls.add("2019-02-06");ls.add("2019-02-07");
ls.add("2020-01-25");ls.add("2020-01-26");ls.add("2020-01-27");
if(ls.contains(year))
return true;
return false;
}
//法定假日,五一和国庆
public boolean holidayList(String findDate){
List ls = new ArrayList();
ls.add("05-01");
ls.add("05-02");
ls.add("05-03");
ls.add("10-01");
ls.add("10-02");
ls.add("10-03");
if(ls.contains(findDate))
return true;
return false;
}
}
热心网友
时间:2023-10-24 16:03
这个是调用calculateTheWorkDate这个方法,有2个参数DateTime.Instance().getCurrentTime(1)和service.getCn_yb()。
想知道怎么获取,看calculateTheWorkDate这个方法代码。
你不贴出来calculateTheWorkDate里面的内容,谁知道怎么获取的。