注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Javado做Java

学习的点点滴滴http://blog.csdn.net/guorujian

 
 
 

日志

 
 
关于我

东北人! 狮子的獠牙、光速拳! 我很佩服163的办事认真,故乡一栏竟然能精确到乡,而且我们乡合并才不久。厉害!永远支持网易!

网易考拉推荐

求工作日的小方法  

2007-09-10 22:56:31|  分类: 总结篇 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

工作中经常会遇到许多“变态”的需求,由于公司不能上网,就得自己闷头苦想了!

测试通过了,回到家上网查了一下,感觉还可以,于是整理如下:

package com.test.date;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class TestDate {

 public static void main(String[] args) throws Exception   //测试main
 {
  String s = "2007-9-1";
  String e = "2007-9-15";
  //格式化当前系统日期
  SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  Date date_s = format.parse(s);
  Date date_e = format.parse(e);
  int day = TestDate.getDiffDaysNoWeekend(date_s, date_e);
  System.out.println("工作日期:"+day);
 }

 public static int getDiffDays(Date start, Date end)
 {
  int sum = Integer.MIN_VALUE;
  if (start != null && end != null)
  {
   long lngMinMilSec = start.getTime();
   long lngMaxMilSec = end.getTime();
   sum = (int) ((lngMaxMilSec - lngMinMilSec) / (1000 * 60 * 60 * 24));
  }
  return sum;
 }

 public static int getDiffDaysWithWeekend(Date start, Date end)
 {
  int sum = getDiffDays(start, end);
  return sum != Integer.MIN_VALUE ? sum + 1 : Integer.MIN_VALUE;
 }

 public static int getWeek(Date date)
 {
  int sum = Integer.MIN_VALUE;
  Calendar cd = Calendar.getInstance();
  cd.setTime(date);
  int week = cd.get(Calendar.DAY_OF_WEEK);
  if (week == 1)
  {
   sum = 7;
  } else
  {
   sum = week - 1;
  }
  return sum;
 }

 public static int getDiffDaysNoWeekend(Date start, Date end)
 {
  int sum = Integer.MIN_VALUE;
  // Total days
  int days = getDiffDaysWithWeekend(start, end);
  // Monday 1 -- Sunday 7
  int weekStart = getWeek(start);
  // Week count
  int intg = days / 7;
  // left days
  int mod1 = days % 7;
  // left days modified
  int mod2 = (weekStart + mod1) % 7;
  int factor = 0;
  if (mod1 != 0 && mod2 < weekStart)
  {
   // Start date is from Monday 1 -- Saturday 6.
   if (weekStart != 7)
   {
    factor = mod2 + 1;
    // Max value is 2
    if (factor > 2)
     factor = 2;
   } else
   {
    factor = 1;
   }
  }
  sum = days - intg * 2 - factor;
  return sum;
 }

}

  评论这张
 
阅读(130)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017