亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dateorganizer.java

?? Owing to the applet Gantt chart source yard, already Chinese melt, Gantt chart can demonstrate a Chi
?? JAVA
字號:
/** *   Copyright 2004 Carlos Silva A. *  *   Licensed under the Apache License, Version 2.0 (the "License"); *   you may not use this file except in compliance with the License.  *   You may obtain a copy of the License at   *  *   http://www.apache.org/licenses/LICENSE-2.0 *  *   Unless required by applicable law or agreed to in writing, software *   distributed under the License is distributed on an "AS IS" BASIS, *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *   See the License for the specific language governing permissions and *   limitations under the License. *  */package jgantt.model;import java.io.IOException;import java.util.Date;import java.util.HashSet;import java.util.Set;import jgantt.Messages;/** * DateOrganizer controla la vigencia de fechas. *  * TODO: Soporte a tareas con duracion menor a un dia  * <p>$Date: 2005/06/12 09:52:48 $</p>  * @version $Revision: 1.12 $ * @author {user} */public class DateOrganizer {	/**	 * Hora de Inicio de la jornada	 */	byte startHH = 9;	/**	 * Minutos de Inicio de la jornada	 */	byte startMM = 0;	/**	 * Dias habiles en la semana	 * Comenzando desde lunes	 */	boolean laborDays[] = { true, true, true, true, true, false, false };	/**	 * Horas de trabajo diario	 */	int workHours = 8;	/**	 * Minutos de trabajo diario	 */	int workMinutes = 00;	/**	 * Asigna las horas trabajables cada dia.	 * 	 * @param hh horas trabajables	 * @param mm minutos trabajables, puede ser mayor a 60.	 */	public void setWorktime(int hh, int mm) {		workHours = hh + (mm / 60);		workMinutes = mm % 60;	}	/**	 * Retorna los minutos trabajables cada dia	 *	 */	public int getWorktime() {		return workHours * 60 + workMinutes;	}	/**	 * Dias feriados en la forma de un Set con objetos de tipo java.util.Date.	 * Cada objeto de este set debe contener una fecha (sin hora, minutos, segundos ni milesimas)	 */	Set holidays = new HashSet();		/**	 * extraWorkDays, feriados en la forma de un Set con objetos de tipo java.util.Date.	 * Cada objeto de este set debe contener una fecha (sin hora, minutos, segundos ni milesimas)	 */	Set extraWorkDays= new HashSet();		// transient	/**	 * Calendario para calculos internos	 */	transient java.util.Calendar cal = new java.util.GregorianCalendar();		/**	 * Constructor para DateOrganizer	 */	public DateOrganizer() {		super();	}	/**	 * Asigna el arreglo con los dias habiles 	 * arr[0]=lunes.	 */	public void setLaborDays(boolean arr[]) throws GanttException {		laborDays = arr;		int laborDaysCount=0;		for (int i = 0; i < 7; i++)			if (laborDays[i])				laborDaysCount++;		if (laborDaysCount == 0) {			throw new GanttException(Messages.getString("dateorg.error.noLaborDays")); //$NON-NLS-1$		}	}		/**	 * Retorna la misma fecha con horas,minutos y segundos vacios.	 * @param d	 * @return	 */	private Date truncDate(Date d) {		cal.setTime(d);		cal.set(java.util.Calendar.HOUR_OF_DAY, 0);		cal.set(java.util.Calendar.MINUTE, 0);		cal.set(java.util.Calendar.SECOND, 0);		cal.set(java.util.Calendar.MILLISECOND, 0);		return cal.getTime();	}	/**	 * Retorna la primera hora del dia indicado que sea trabajable, i.e., 	 * cambia la hora de inicio de la jornada.	 * Actualmente normaliza a 00:00:00.000 horas	 * pero debe normalizar a las 00:00 horas del dia	 * del milisegundo siguiente	 	 */	public Date getNormalizedStartDate(Date d) {		return truncDate(d);	}	/**	 * Retorna el d韆 habil siguiente considerando feriados	 */	public Date nextLaborDay(Date d) {		cal.setTime(d);		boolean tryNextDay = false;		do {			tryNextDay = isLaborable();			if (tryNextDay) {				cal.add(java.util.Calendar.DATE, 1);			}		} while (tryNextDay);		return cal.getTime();	}			/**	 * Nueva fecha luego del termino de la anterior mas un delay en dias	 */	public Date getNextLaborableDate(Date d, int delay) {		// normalizar a las 00:00 horas del dia del milisegundo siguiente		cal.setTime(d);		cal.add(java.util.Calendar.MILLISECOND, 1);		 		int direction = (delay<0 ? -1 : 1);		int skiped = 0;		if (direction < 0) {			cal.add(java.util.Calendar.DATE, -1);			skiped = -1;		}		boolean laborable = isLaborable();		while ((skiped != delay) || (!laborable)) {			if (laborable)				skiped += direction;			cal.add(java.util.Calendar.DATE, direction);			laborable = isLaborable();		}		return cal.getTime();	}		/**	 * Para fechas de termino, resta un milisegundo (para llegar al dia anterior) y	 * si el dia anterior no es habil, continua devolviendose.	 * 	 * @param d fecha de termino calculada	 * @return nueva fecha de termino normalizada	 */	public Date getMaximumFinishDate(Date d) {		// restar un milisegundo		cal.setTime(d);		cal.add(java.util.Calendar.MILLISECOND, -1);		// si no es trabajable, retroceder hasta que lo sea.		boolean laborable = isLaborable();		while (!laborable) {			cal.add(java.util.Calendar.DATE, -1);			laborable = isLaborable();		}		return cal.getTime();	}	/**	 * Calcula una cantidad de dias en el futuro de dias sin 	 * incluir feriados ni festivos.	 */	public Date getFinishDate(Date start, int workDays) {		cal.setTime(start);		int added = 0;		boolean laborable = isLaborable();		while ((added < workDays) || (!laborable)) {			//while (added < workDays)  {  // nuevo			if (laborable)				added++;			cal.add(java.util.Calendar.DATE, 1);			laborable = isLaborable();		}		return getMaximumFinishDate(cal.getTime());	}	/**	 * Calcula el numero de dias habiles entre dos fechas	 * las fecha from comienza de 00:00:00.000 y la fecha to 	 * termina en 23:59:59.999 del ultimo dia trabajado.	 */	public int daysBetween(Date from, Date to) {		cal.setTime(from);		int added = 0;		boolean laborable = isLaborable();		while (cal.getTime().before(to)) {			if (isLaborable())				added++;			cal.add(java.util.Calendar.DATE, 1);		}		return added;	}	// protegidas	/**	 * Transforma desde DOW de la clase Calendar a numeros basados	 * en lunes=0.	 */	public int DOW(int dow) {		switch (dow) {			case java.util.Calendar.SUNDAY :				return 6;			case java.util.Calendar.MONDAY :				return 0;			case java.util.Calendar.TUESDAY :				return 1;			case java.util.Calendar.WEDNESDAY :				return 2;			case java.util.Calendar.THURSDAY :				return 3;			case java.util.Calendar.FRIDAY :				return 4;			case java.util.Calendar.SATURDAY :				return 5;		}		throw new RuntimeException(Messages.getString("dateorg.error.badDOW")); //$NON-NLS-1$	}	/**	 * Determina si una fecha en particular es laborable, para esto	 * considera dias de la semana, feriados y dias extra.	 * 	 * Usa la fecha definida en el el calendario interno (cal)	 * normalizandola y luego retornandola.	 * 	 * @return true si es un dia laborable	 */	private boolean isLaborable() {				boolean result;		Date d = cal.getTime();				cal.set(java.util.Calendar.HOUR_OF_DAY, 0);		cal.set(java.util.Calendar.MINUTE, 0);		cal.set(java.util.Calendar.SECOND, 0);		cal.set(java.util.Calendar.MILLISECOND, 0);		if(laborDays[DOW(cal.get(java.util.Calendar.DAY_OF_WEEK))])			result = !holidays.contains(cal.getTime());						else			result = extraWorkDays.contains(cal.getTime());		cal.setTime(d);		return result;			}	/**	 * Determina si una fecha en particular es laborable, se 	 * implemente a traves de {@link #isLaborDay}.	 *  	 * @param d fecha	 * @return true si es un dia laborable	 */	public boolean isLaborable(Date d) {		cal.setTime(d);				return isLaborable();	}	/**	 * Consulta si una fecha esta en la lista de feriados		 	 * @return true si es feriado	 */	private boolean isHoliday() {		Date d = cal.getTime();		cal.set(java.util.Calendar.HOUR_OF_DAY, 0);		cal.set(java.util.Calendar.MINUTE, 0);		cal.set(java.util.Calendar.SECOND, 0);		cal.set(java.util.Calendar.MILLISECOND, 0);		boolean ih = holidays.contains(cal.getTime());		cal.setTime(d);		return ih;	}		/**	 * Consulta si una fecha esta en la lista de fechas	 * extraordinarias.	 * @return true si es un dia extra de trabajo	 */	private boolean isExtraWorkDay() {		Date d = cal.getTime();		cal.set(java.util.Calendar.HOUR_OF_DAY, 0);		cal.set(java.util.Calendar.MINUTE, 0);		cal.set(java.util.Calendar.SECOND, 0);		cal.set(java.util.Calendar.MILLISECOND, 0);		boolean result = extraWorkDays.contains(cal.getTime());		cal.setTime(d);		return result;	}			/**	 * Consulta si una fecha es feriado (no no fin de semana).	 * 	 * @param d fecha a consultar	 * @return true si es feriado	 */	public boolean isHoliday(Date d) {		cal.setTime(d);		return isHoliday();	}	/**	 * Determina si un dia de la semana es un dia laborable.	 * No considera feriados ni dias extra.	 * 	 * @param d dia de la semana en escala 0=lunes, 6=domingo	 * @return true si es un dia laborable	 */	public boolean isLaborDay(int d) {		return laborDays[d];	}		/**	 * Genera una indicacion del dia de la semana en la escala 0=lunes, 6=domingo.	 * @param d fecha	 * @return dia de la semana	 */	public int dow(Date d) {		cal.setTime(d);		return DOW(cal.get(java.util.Calendar.DAY_OF_WEEK));	}	// serializacion	private void readObject(java.io.ObjectInputStream in)		throws IOException, ClassNotFoundException {		in.defaultReadObject();		// reiniciar variables transientes...		cal = new java.util.GregorianCalendar();	}	/**	 *Asigna los dias feriados en la forma de un Set con objetos de tipo java.util.Date.	 * Cada objeto de este set debe contener una fecha (sin hora, minutos, segundos ni milesimas) 	 */	public void setHolidays(Set s) {		holidays.clear();		holidays.addAll(s);	}	/**	 * Retorna la lista de feriados existente	 * Esta lista puede ser modificada por la aplicacion	 * pero debera forzarse un recalculo completo	 * @return Set con los feriados	 */	public Set getHolidays() {		return holidays;	}	/**	 * Agrega un dia feriado a la lista.	 */	public void addHoliday(Date d) {		holidays.add(truncDate(d));	}	/**	 * Agrega un dia feriado a la lista.	 */	public void removeHoliday(Date d) {		holidays.remove(truncDate(d));	}		/**	 * Retorna la lista de dias extra existentes.	 * Esta lista puede ser modificada por la aplicacion	 * pero debera forzarse un recalculo completo	 * @return Set con los feriados	 */	public Set getExtraWorkDays() {		return extraWorkDays;	}	/**	 * Agrega un dia extra a la lista.	 */	public void addExtraWorkDays(Date d) {		extraWorkDays.add(truncDate(d));	}	/**	 * Agrega un dia extra a la lista.	 */	public void removeExtraWorkDays(Date d) {		extraWorkDays.remove(truncDate(d));	}	/**	 * Permite asignar automaticamente un feriado o un dia extra.	 * @param date Fecha 	 * @param set true si la fecha debe ser laborable	 */	public void setLaborable(Date date, boolean set){		date = truncDate(date);		if (laborDays[dow(date)])			if (set)				holidays.remove(date);			else								holidays.add(date);		else			if (set)				extraWorkDays.add(date);			else				extraWorkDays.remove(date);			}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费不卡视频| 高清beeg欧美| 亚洲午夜电影在线| 亚洲黄色av一区| 亚洲精品视频一区二区| 亚洲欧美日韩人成在线播放| 亚洲三级视频在线观看| 亚洲另类在线视频| 亚洲成a人v欧美综合天堂下载| 夜夜爽夜夜爽精品视频| 日韩中文字幕91| 蜜桃一区二区三区四区| 精品一区二区三区在线视频| 国产一区在线观看视频| 成人免费毛片片v| 在线视频一区二区免费| 欧美日韩视频在线一区二区| 日韩三级中文字幕| 国产日韩精品一区二区浪潮av | 欧美剧在线免费观看网站| 欧洲激情一区二区| 欧美一二三在线| 欧美国产激情二区三区| 亚洲欧美电影一区二区| 五月激情综合网| 国产乱码字幕精品高清av| 色综合久久中文综合久久97| 91精品国产综合久久久蜜臀粉嫩 | 国产成a人无v码亚洲福利| 99久久777色| 欧美一区二区三区小说| 国产亚洲精品资源在线26u| |精品福利一区二区三区| 日一区二区三区| 成人听书哪个软件好| 欧美美女一区二区在线观看| 久久久精品国产99久久精品芒果 | 免费成人小视频| gogogo免费视频观看亚洲一| 91精品婷婷国产综合久久性色| 久久久蜜桃精品| 亚洲3atv精品一区二区三区| 成人av中文字幕| 日韩欧美不卡一区| 亚洲免费看黄网站| 国产成人在线视频免费播放| 欧美日韩高清一区二区不卡| 久久久www成人免费无遮挡大片| 亚洲综合区在线| 成人黄页在线观看| 精品国产乱码久久久久久闺蜜| 亚洲精品久久7777| 波多野结衣精品在线| 26uuu国产日韩综合| 亚洲午夜电影在线观看| 一本到高清视频免费精品| 久久久久综合网| 久久精品国内一区二区三区| 欧美日韩国产经典色站一区二区三区| 欧美极品美女视频| 国产二区国产一区在线观看| 欧美一区二区人人喊爽| 亚洲午夜电影网| 精品视频在线视频| 亚洲免费在线看| 色综合天天做天天爱| 中文一区二区完整视频在线观看| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美三级日韩三级| 香蕉久久一区二区不卡无毒影院| 色婷婷av久久久久久久| 日韩毛片在线免费观看| 97久久超碰国产精品| 亚洲天堂久久久久久久| 99re8在线精品视频免费播放| 日本一区免费视频| 成人av高清在线| 亚洲素人一区二区| 欧美又粗又大又爽| 亚洲成人一区在线| 26uuu欧美日本| 国产91精品欧美| 一区二区三区在线视频观看58| 91啪九色porn原创视频在线观看| 国产精品伦一区| 欧美自拍偷拍午夜视频| 香港成人在线视频| 精品少妇一区二区三区免费观看| 激情欧美一区二区三区在线观看| 久久品道一品道久久精品| 成人黄页在线观看| 亚洲午夜一二三区视频| 欧美电视剧在线看免费| 国产自产2019最新不卡| 成人免费在线播放视频| 欧美精品一卡二卡| 精品一区二区精品| 中文字幕综合网| 538prom精品视频线放| 国产一区二区精品久久99| 国产精品福利在线播放| 欧美日韩精品一区视频| 激情综合五月婷婷| 中文字幕佐山爱一区二区免费| 欧美精品三级在线观看| 激情综合网最新| 亚洲精品五月天| 精品久久久久久久久久久久久久久 | av激情亚洲男人天堂| 亚洲综合久久久| 久久嫩草精品久久久久| 色老综合老女人久久久| 老司机免费视频一区二区| 国产精品欧美一区二区三区| 欧美日本视频在线| 福利视频网站一区二区三区| 午夜一区二区三区视频| 国产日韩欧美高清在线| 777午夜精品视频在线播放| jvid福利写真一区二区三区| 免费在线观看不卡| 亚洲三级免费观看| 久久久久久久av麻豆果冻| 欧美日韩免费不卡视频一区二区三区 | 亚洲超碰精品一区二区| 国产精品久久久一区麻豆最新章节| 欧美色欧美亚洲另类二区| 成人sese在线| 国产99久久久国产精品| 奇米色一区二区| 五月综合激情婷婷六月色窝| 国产精品久久午夜| 久久久蜜桃精品| 日韩一本二本av| 91精品国产综合久久久久久久久久| 91无套直看片红桃| 成人黄色软件下载| 国产成人午夜视频| 麻豆精品在线看| 久久电影网站中文字幕| 婷婷开心激情综合| 亚洲一区二区五区| 亚洲一区二区精品3399| 一区二区三区欧美久久| 自拍视频在线观看一区二区| 中文字幕高清不卡| 国产精品久久久久久亚洲毛片 | 久久久久久久久一| 日韩欧美你懂的| 欧美美女喷水视频| 久久久美女艺术照精彩视频福利播放| 日韩免费在线观看| 欧美一区国产二区| 日韩欧美国产一区二区三区| 3atv在线一区二区三区| 欧美一区二区在线视频| 欧美一区二区三区系列电影| 欧美日韩黄色影视| 制服丝袜av成人在线看| 91精品国产欧美一区二区成人| 91精品国产入口在线| 欧美乱妇23p| 精品国产乱码久久久久久影片| 欧美白人最猛性xxxxx69交| 精品国产91乱码一区二区三区| 日韩欧美在线一区二区三区| 精品久久久久久最新网址| 久久精品夜夜夜夜久久| 中文字幕中文在线不卡住| 亚洲欧美精品午睡沙发| 亚洲综合久久久| 美女视频一区二区三区| 国产精品99久久久| 一本在线高清不卡dvd| 欧美色综合网站| 久久日一线二线三线suv| 综合久久国产九一剧情麻豆| 亚洲国产欧美在线人成| 狠狠v欧美v日韩v亚洲ⅴ| 97久久超碰国产精品| 欧美一区二区在线不卡| 中文在线资源观看网站视频免费不卡 | 在线电影国产精品| 国产午夜精品美女毛片视频| 亚洲欧洲美洲综合色网| 日韩精品高清不卡| 春色校园综合激情亚洲| 欧美日韩国产色站一区二区三区| 2020国产精品久久精品美国| 国产精品成人一区二区艾草| 亚洲成人综合在线| 成人一级黄色片| 在线综合视频播放| 亚洲日本青草视频在线怡红院| 日韩极品在线观看| www.欧美.com| 日韩午夜精品电影| 亚洲激情五月婷婷| 国产成人免费av在线| 日韩天堂在线观看|