距离节日还有几天java代码

阅读: 评论:0

距离节日还有几天java代码

距离节日还有几天java代码

需求:可计算实际应休天数,例从6月1日没休息一直干到8月1日,期间经历了周未若干,及法定节假日,需要将周未应补假期及法定节假日假期一同统计出来。

网上找了好多应休天数计算的,都是只计算周未的,都没我要的。 so  自己写了一个。 但这只是个基本实现,没考虑到跨年的问题。

红字部分为此程序的基本思想。

ParseException;

SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import java.util.HashMap;

import java.util.Map;

/**

*

*/

/**

*

* 文件建立于2009-6-24

*/

public class WorkDay {

/**

* @param args

*/

/*

* 先找时间段内包含的节日,确定节日中是否经历周未

* 如有周未,先计算除周未外的假日天数,最后再计算周未天数

*/

public int ds=3;           //节假日休息天数

Map map1=new HashMap();   //节假日名:起休日期

Map map2=new HashMap();    //起休日期:止休日期

public String st="2009-04-12";

public String et="2009-06-18";

public int jiari=0;

public WorkDay() throws ParseException{

map1.put("5.1", "05-01");

map2.put("05-01", "05-03");

String st1&#("5.1").toString();

String et1&#(st1).toString();

SimpleDateFormat sdf=new SimpleDateFormat("MM-dd");

SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd");

SimpleDateFormat sdf3=new SimpleDateFormat("yyyy");

Date sti=sdf.parse(st.substring(5));

Date eti=sdf.parse(et.substring(5));

Date i = sdf.parse(st1);

Date i2= sdf.parse(et1);

/*

* 节日日期需在起休日之后    且   节日多出起停日期的部分也需不计

* 外国的星期一为中国的星期天

*/

if(sdf3.parse(st.substring(0,4))pareTo(sdf3.parse(et.substring(0,4)))==0){

if(i.after(sti)){ //如果节日起休日在任务日当中

if(i2.before(eti)){  //如果节日休止日在任务日当中

/*

* 同年份,任务起始日和终止日如果跨一个年份的话,可能计算会出现比较大的误差

* 等测试

*/

Calendar ca&#Instance();

ca.setTime(sdf2.parse(st.substring(0,5)+st1));

for(int k=0;k

ca.add(Calendar.DAY_OF_MONTH, k);

(Calendar.DAY_OF_WEEK)==7||ca.get(Calendar.DAY_OF_WEEK)==1)

continue;

else jiari++;

}

ca.setTime(sdf2.parse(st));

int xinqi&#(Calendar.DAY_OF_WEEK);

int t1&#(Calendar.DAY_OF_YEAR);

ca.setTime(sdf2.parse(et));

int t2&#(Calendar.DAY_OF_YEAR);

if(xinqi==1){

jiari+=((t2-t1)/7)*2+1;

}else{

jiari+=(t2-t1+1-(7-xinqi+2))*2/7+1;

}

}

}

}

}

public static void main(String[] args) {

// TODO Auto-generated method stub

/*Calendar ca&#Instance();

try {

ca.setTime(new SimpleDateFormat("yyyy-MM").parse("2008-02"));

} catch (ParseException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.ActualMaximum(Calendar.DATE));*/

WorkDay wd=new WorkDay();

System.out.println(wd.jiari);     } }

本文发布于:2024-02-04 19:23:47,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170714682858769.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:几天   节日   距离   代码   java
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23