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!