Contar somente dias uteis

Galeracomo eu faco pra contar apenas os dias uteis entre determinadas datas??? eu estava pensando em ir iterando as datas e dar um toSring nela e verificar qual o dia da semana que representa aquele dia… mas eu gostaria de saber se ha um algoritimo melhor, pq dessa forma eh algo bem na ‘Gambiarra’.

Brigadu!!!

getDay()
(0 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, 4 = Thursday, 5 = Friday, 6 = Saturday)

DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM, new Locale("pt", "BR")); if (df.getDay() == 0) or (df.getDay() == 6) System.out.println("Fim de semana");

acho que vai asim

vc pode fazer desse jeito ae oh:

[code] public String getUltimaDataUtil(){
Calendar cal = Calendar.getInstance();

     DateFormat df = new SimpleDateFormat ("dd/MM/yyyy");   
	 
     if (calendar.get(Calendar.DAY_OF_WEEK) == 1){
    	 cal.add (Calendar.DATE, -2); 
     }else if (calendar.get(Calendar.DAY_OF_WEEK) == 2){
    	 cal.add (Calendar.DATE, -3); 
     }else{
    	 cal.add (Calendar.DATE, -1); 
     }
     
    // System.out.println (df.format (cal.getTime())); // imprime 10/06/2006
	 
	 return df.format (cal.getTime());
 } [/code]

tenta ae e ve se funcionou…

Henrique

o codigo q eu te passei é para pegar o ultimo dia util.;… ai é só modificar ao seu gosto…

Henrique

Nao sei se é o seu caso, mas tbm há os feriados.

[quote=java-lee]Galeracomo eu faco pra contar apenas os dias uteis entre determinadas datas??? eu estava pensando em ir iterando as datas e dar um toSring nela e verificar qual o dia da semana que representa aquele dia… mas eu gostaria de saber se ha um algoritimo melhor, pq dessa forma eh algo bem na ‘Gambiarra’.

Brigadu!!![/quote]

  • Obtenha a diferença entre as datas em dias corridos;
  • Veja quais os feriados que existem entre essas duas datas;
  • Também é necessário saber quantos sábados e domingos existem entre essas duas datas. Note que alguns feriados caem em sábados e domingos.
  • Alguém deve ter feito isso já. Veja se o BrazilUtils não tem algo parecido.

Vlw galera ja consegui, depois eu adiciono no meu metodo os feriados, eh que eu to com mmuuuitoa pressa ( Tanta pressa q usei athe metodo deprecated )

Vopu postar aki o codigo da minha classe pra quem quiser aproveitar:

[code]

public static Date stringToDate( String stringDate ) {
	
	Date date = null;
	
	try {
        SimpleDateFormat sdf =
            new SimpleDateFormat( "dd/MM/yyyy", new Locale( "pt_BR" ) );
        date = sdf.parse( stringDate );
    } catch ( ParseException e ) {
    	e.printStackTrace();
    }
    
    return date;
}

public static int deductDates( Date initialDate, Date finalDate ) {
	
	if( initialDate == null || finalDate == null ) {
		return 0;
	}

	int days = ( int ) ( ( finalDate.getTime() - initialDate.getTime() )/( 24*60*60*1000 ) );
	
	
	return ( days > 0 ? days : 0 ) ;
}

public static String dateToString( Date date ) {	
	
    SimpleDateFormat sdf =
        new SimpleDateFormat( "dd/MM/yyyy", new Locale( "pt_BR" ) );
    String dateFormated = sdf.format( date );
    
    return dateFormated;
}

public static Date clearHour( Date date ) {		
	return ( stringToDate( dateToString( date ) ) );
}

public static int getWorkingDays( Date initialDate, Date finalDate ){
	
	int workingDays = 0;
	int totalDays = deductDates( initialDate, finalDate );
	
                            //tah eu sei que getDay, getYar e getMonth sao deprecated, eu coloquei so pra teste.
	Calendar calendar = new GregorianCalendar( finalDate.getYear(), finalDate.getMonth(), finalDate.getDay() );
	
	for( int i = 0; i <= totalDays; i++ ) {
		
		if( !( calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY ) && !( calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY ) ) {
			workingDays++;
		}
		calendar.add( Calendar.DATE, 1 );
	}
	
	return workingDays;
}[/code]

'e isso…
vlw pessoal!!

[quote=java-lee]Vlw galera ja consegui, depois eu adiciono no meu metodo os feriados, eh que eu to com mmuuuitoa pressa ( Tanta pressa q usei athe metodo deprecated )

[/quote]

Java-Lee obrigado pelo codigo… está sendo util em uma aplicação que estou fazendo. porem foi necessario fazer algumas correções no metodo getWorkingDays estou postando a modificação que fiz, o resto ficou igual!
abraço!

[code]public static int getWorkingDays( Date initialDate, Date finalDate ){

	int workingDays = 0;
	int totalDays = deductDates( initialDate, finalDate );		
	
	Calendar calendar = new GregorianCalendar();
	
	//Setando o calendar com a Data Inicial
	calendar.setTime(initialDate);
	
	for( int i = 0; i <= totalDays; i++ ) {
		
		if( !( calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY ) && !( calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY ) ) {
			workingDays++;
		}
		calendar.add( Calendar.DATE, 1 );
		
	}		
	return workingDays;
}[/code]

Obrigado! estou com o problema dos feriados tambem, assim que solucionar posto para vocês!
abraço!