Contar somente dias uteis

7 respostas
J

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!!!

7 Respostas

V

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

H

vc pode fazer desse jeito ae oh:

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());
     }

tenta ae e ve se funcionou...

Henrique

H

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

Henrique

bbviana

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

T

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!!!

  • 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.
J

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:

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;
	}

'e isso....
vlw pessoal!!

I
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 )

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!

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;
	}

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

Criado 9 de agosto de 2006
Ultima resposta 1 de mai. de 2009
Respostas 7
Participantes 6