根据当前时间返回去除节假日,和周六日的天数后10天的时间

Ryo6688 2011-01-06 05:45:22
比如:当前时间是2011-01-06,返回得到:2011-01-16 ,不过要去除节假日,和周六日(比如只是个说明,2011-01-16不是正确时间)

找了些资料,知道应该在数据库中创建节日表,表信息如下:

type date id name
"法定假日","2011-04-03",1,"清明节"
"法定假日","2011-04-04",2,"清明节"
"法定假日","2011-04-05",3,"清明节"
"法定假日","2011-04-30",4,"劳动节"
"法定假日","2011-05-01",5,"劳动节"
"法定假日","2011-05-02",6,"劳动节"
"法定假日","2011-06-04",7,"端午节"
"法定假日","2011-06-05",8,"端午节"
"法定假日","2011-06-06",9,"端午节"
"法定假日","2011-09-10",12,"中秋节"
"法定假日","2011-09-11",13,"中秋节"
"法定假日","2011-09-12",14,"中秋节"
"法定假日","2011-10-07",17,"国庆节"
"法定假日","2011-10-06",18,"国庆节"
"法定假日","2011-10-05",19,"国庆节"
"法定假日","2011-10-04",20,"国庆节"
"法定假日","2011-10-03",21,"国庆节"
"法定假日","2011-10-02",22,"国庆节"
"法定假日","2011-10-01",23,"国庆节"
"调休","2011-10-09",24,"国庆节"
"调休","2011-10-08",25,"国庆节"
"法定假日","2011-01-01",26,"元旦"
"法定假日","2011-01-02",27,"元旦"
"法定假日","2011-01-03",28,"元旦"
"法定假日","2011-02-02",29,"春节"
"法定假日","2011-02-03",30,"春节"
"法定假日","2011-02-04",31,"春节"
"法定假日","2011-02-05",32,"春节"
"法定假日","2011-02-06",33,"春节"
"法定假日","2011-02-07",34,"春节"
"法定假日","2011-02-08",35,"春节"
"调休","2011-01-30",36,"春节"
"调休","2011-02-12",37,"春节"
"调休","2011-04-02",38,"清明节"

求方法代码怎么实现,注意"调休"
...全文
422 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
luman2002 2011-01-07
  • 打赏
  • 举报
回复
献丑了
写一个循环
判断当前如果不是周六日或假期,计数器+1
继续判断下一天
当计数器等于10时跳出循环
Ryo6688 2011-01-07
  • 打赏
  • 举报
回复
终于解决,感谢上面几位的思路,把代码贴出来 JDBC连接数据库的

// 根据当前时间返回去除节假日,和周六日的后10天的时间
public String lastbinding(int sum) {

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date now = new Date();
ArrayList list1=new ArrayList();
ArrayList list2=new ArrayList();
try {
conn=new ConnectDB().getConn();
String sql="select type,date from zjcf_holiday";
pstmt=conn.prepareStatement(sql);
rs=pstmt.executeQuery();
while(rs.next()){
list1.add(rs.getString("type"));
list2.add(rs.getString("date"));
}

//System.out.println(list1.get(2)+" "+list2.get(1));
sum=sum+1;
while(sum>0){
if((now.getDay()!=0) && (now.getDay()!=6)){
sum--;
//System.out.println(list1.size());
for(int i=0;i<list1.size();i++){
if((list1.get(i).equals("法定假日"))&&(df.format(now).equals(list2.get(i))))
{
sum++;
}
}
}else{
for(int i=0;i<list1.size();i++){
if((list1.get(i).equals("调休"))&&(df.format(now).equals(list2.get(i))))
{
sum--;
}
}
}
if(sum>0){
now.setDate(now.getDate()+1);
}
System.out.println(sum+" "+df.format(now));
}

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(rs!=null)
rs.close();
if( pstmt != null )
pstmt.close();
if( conn != null )
conn.close();
} catch (SQLException e) {

e.printStackTrace();
}
}
//System.out.println(df.format(now));
return df.format(now);
}

public static void main(String[] args) {
OperKehu oper=new OperKehu();
oper.lastbinding(10);
}
Inhibitory 2011-01-06
  • 打赏
  • 举报
回复
修改一下下面的程序,基本上就可以了,主要是思想
import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;

public class Test {
public static void main(String[] args) {
SimpleDateFormat fomatter = new SimpleDateFormat("yyyy-MM-dd"); // 自己定义转换后的日期格式
GregorianCalendar calendar = new GregorianCalendar();

for (int count = 0; count < 30;) {
calendar.add(GregorianCalendar.DAY_OF_MONTH, 1);
int dow = calendar.get(GregorianCalendar.DAY_OF_WEEK);

// 是周末
if (dow == 1 || dow == 7) {
System.out.println(fomatter.format(calendar.getTime()) + ((dow == 1) ? ": 周日" : ": 周六"));
continue;
}

String dateString = fomatter.format(calendar.getTime());
// 与节日表判断一下,如果是,则continue
System.out.println(dateString);

++count;
}
}
}
crazylaa 2011-01-06
  • 打赏
  • 举报
回复
上面忘了先判断是否周末.
还有,楼主这里没有加上周六周日的调班.中国比较扯蛋,喜欢调班,把正常的双休搞上班,然后又去搞g8黄金周.
crazylaa 2011-01-06
  • 打赏
  • 举报
回复
这个用存储过程做比较合适,一句sql搞不定.
用程序也行,
思路是:把你的这张表的日期全部读到一个HashMap.
然后从起始日期开始,一天天加.加一天去hashmap get一下看看是不是,如果不是就总天数(10天)减1.
就这样一直到总天数为0.
magong 2011-01-06
  • 打赏
  • 举报
回复
好在是后10天,逐一遍历数一数就OK了。

明天是节假日吗?数据库查查,是,计数器不增1,否,增1,增到10后就OK了
Ryo6688 2011-01-06
  • 打赏
  • 举报
回复
节假日库,表中已有,定义每个节假日的事件应该不用哪么复杂的,没人能解决吗?
Jlins 2011-01-06
  • 打赏
  • 举报
回复
1、必须自己定义一个节假日库 而且必须定义每个节假日的事件
Ryo6688 2011-01-06
  • 打赏
  • 举报
回复
顶,望高手解答!

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧