python计算两个日期之间的工作日_计算两个日期之间的工作日(去掉周末和节假日)...

packagecom.utouu.uphone.commons;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.ArrayList;importjava.util.Calendar;importjava.util.Date;importjava.util.Iterator;importjava.util.List;importorg.springframework.stereotype.Component;/*** 获取工作日

*
创建日期:2016年7月21日

* Copyright 2016 UTOUU All Rights Reserved

*@authorzhushuangshuang

*@since1.0

*@version1.0*/@Componentpublic classGetWorkDay {/*** 获取两个时间之内的工作日时间(只去掉两个日期之间的周末时间,法定节假日未去掉)

*

*@paramstart

* -起始时间,共有3个重载方法,可以传入long型,Long型,与Date型

*@paramend

* -结束时间,共有3个重载方法,可以传入long型,Long型,与Date型

*@returnLong型时间差对象*/

/*public static void main(String[] args) {

GetWorkDay g=new GetWorkDay();

List initHoliday;

try {

initHoliday = g.initHoliday();

double days = g.getWorkdayTimeInMillisExcWeekendHolidays("2016-06-30 17-12-53","2016-08-30 11-27-50","yyyy-MM-dd HH-mm-ss",initHoliday);

double formateToDay = g.formateToDay(days);

String formatDuring = g.formatDuring(days);

System.out.println(formateToDay);

System.out.println(formatDuring);

} catch (ParseException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}*/

private double getWorkdayTimeInMillis(long start, longend,

ListlistHolidays) {//如果起始时间大于结束时间,将二者交换

if (start >end) {long temp =start;

start=end;

end=temp;

}//根据参数获取起始时间与结束时间的日历类型对象

Calendar sdate =Calendar.getInstance();

Calendar edate=Calendar.getInstance();

sdate.setTimeInMillis(start);

edate.setTimeInMillis(end);//计算指定时间段内法定节假日天数的毫秒数

long holidays = 0;if (listHolidays != null) {

holidays=getHolidaysInMillis(start, end, listHolidays);

listHolidays.clear();

}//如果两个时间在同一周并且都不是周末日期,则直接返回时间差,增加执行效率

if ((sdate.get(Calendar.YEAR) ==edate.get(Calendar.YEAR))&& (sdate.get(Calendar.WEEK_OF_YEAR) ==edate

.get(Calendar.WEEK_OF_YEAR))&& (sdate.get(Calendar.DAY_OF_WEEK) != 1 &&sdate

.get(Calendar.DAY_OF_WEEK)!= 7)&& (edate.get(Calendar.DAY_OF_WEEK) != 1 &&edate

.get(Calendar.DAY_OF_WEEK)!= 7)) {return new Long(end - start -holidays);

}//如果两个时间在同一周并且都是周末日期,则直接返回0

if ((sdate.get(Calendar.YEAR) ==edate.get(Calendar.YEAR))&& (sdate.get(Calendar.WEEK_OF_YEAR) ==edat

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值