Pegar dia da semana
Pessoal eu tenho um Date, e eu queria fazer a comparação para ver se é sabado ou domingo, como fazer isto ?
Edinei Manica
Curtidas 0
Melhor post
Carlos Heuberger
09/04/2009
e apos obter a data, algo do tipo:
[]]]
Calendar cal = Calendar.getInstance();
cal.setTime(data);
int day = cal.get(Calendar.DAY_OF_WEEK);
switch (day) {
case Calendar.SATURDAY:
cal.add(Calendar.DAY_OF_WEEK, 2);
// talvez cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); ?
break;
case Calendar.SUNDAY:
cal.add(Calendar.DAY_OF_WEEK, 1);
break;
default:
break;
}
Date dataSemana = cal.getTime();GOSTEI 1
Mais Respostas
Bruno Ambrózio
09/04/2009
Ednei,
Não sei se há alguma outra forma, mas quando precisei, fiz assim:
Abraço.
//retorna o dia da semana dada uma data
public String retornarDiaSemana(int ano, int mes, int dia)
{
Calendar calendario = new GregorianCalendar(ano, mes - 1, dia);
int diaSemana = calendario.get(Calendar.DAY_OF_WEEK);
return pesquisarDiaSemana(diaSemana);
}
//faz a pesquisa, dado um inteiro de 1 a 7
public String pesquisarDiaSemana(int _diaSemana)
{
String diaSemana = null;
switch (_diaSemana)
{
case 1:
{
diaSemana = "Domingo";
break;
}
case 2:
{
diaSemana = "Segunda";
break;
}
case 3:
{
diaSemana = "Terça";
break;
}
case 4:
{
diaSemana = "Quarta";
break;
}
case 5:
{
diaSemana = "Quinta";
break;
}
case 6:
{
diaSemana = "Sexta";
break;
}
case 7:
{
diaSemana = "Sábado";
break;
}
}
return diaSemana;
}
GOSTEI 0
Edinei Manica
09/04/2009
[quote="brunoambrozio"]Ednei,
Não sei se há alguma outra forma, mas quando precisei, fiz assim:
Abraço.
O problema é que eu tenho uma data no formato
"20-02-2005 23:30" armazenados em uma string!!!!!!
Como fazer para passar para GregorianCalendar ?
//retorna o dia da semana dada uma data
public String retornarDiaSemana(int ano, int mes, int dia)
{
Calendar calendario = new GregorianCalendar(ano, mes - 1, dia);
int diaSemana = calendario.get(Calendar.DAY_OF_WEEK);
return pesquisarDiaSemana(diaSemana);
}
//faz a pesquisa, dado um inteiro de 1 a 7
public String pesquisarDiaSemana(int _diaSemana)
{
String diaSemana = null;
switch (_diaSemana)
{
case 1:
{
diaSemana = "Domingo";
break;
}
case 2:
{
diaSemana = "Segunda";
break;
}
case 3:
{
diaSemana = "Terça";
break;
}
case 4:
{
diaSemana = "Quarta";
break;
}
case 5:
{
diaSemana = "Quinta";
break;
}
case 6:
{
diaSemana = "Sexta";
break;
}
case 7:
{
diaSemana = "Sábado";
break;
}
}
return diaSemana;
}
GOSTEI 0
Luiz Rocha
09/04/2009
Provavelmente voce vai usar o construtor:
[b]GregorianCalendar(int year, int month, int date, int hour, int minute) [/b]
Para obter os argumentos, você deverá usar o método [i]parseInt()[/i] da classe [i]Integer[/i] e trabalhar na string que você tem com os métodos [i]trim()[/i] e [i]substring(int beginIndex, int endIndex) [/i].
Pronto, alguns minutos você resolve isso. Juntando com o código do bruno para trazer o nome do dia em português... sussa!! Boa sorte.
GOSTEI 0
Edinei Manica
09/04/2009
[quote="luizfarruda"]Provavelmente voce vai usar o construtor:
[b]GregorianCalendar(int year, int month, int date, int hour, int minute) [/b]
Para obter os argumentos, você deverá usar o método [i]parseInt()[/i] da classe [i]Integer[/i] e trabalhar na string que você tem com os métodos [i]trim()[/i] e [i]substring(int beginIndex, int endIndex) [/i].
Pronto, alguns minutos você resolve isso. Juntando com o código do bruno para trazer o nome do dia em português... sussa!! Boa sorte.
Era exatamente isto que eu não queria fazer.... Pois fica grande o código ter que ficar dando substring, Mas se eu não achar outra solução vai estaa....
GOSTEI 0
Luiz Rocha
09/04/2009
é a única maneira... tenho certeza.
mas nem é grande não... em 3 ou 4 linhas vc faz tudo, num único statement.... agora se vc tiver usando isso várias vezes no seu programa, compensa fazer uma classe utilitária com esse método.
GOSTEI 0
Edinei Manica
09/04/2009
[quote="luizfarruda"]é a única maneira... tenho certeza.
mas nem é grande não... em 3 ou 4 linhas vc faz tudo, num único statement.... agora se vc tiver usando isso várias vezes no seu programa, compensa fazer uma classe utilitária com esse método.
é o meu problema é que eu tenho que verificar se e sabado ou domingo, e se for um destes dia eu tenho que retornar a data da próxima segunda.
GOSTEI 0
Giovane Kuhn
09/04/2009
naum naum... deixa o java fazer para você isso.
utilize a classe [url=http://java.sun.com/j2se/1.5.0/docs/api/java/text/SimpleDateFormat.html]SimpleDateFormat[/url]
O pattern pode ser algo assim:
Para obter a data, basta utilizar o método [url=http://java.sun.com/j2se/1.5.0/docs/api/java/text/DateFormat.html#parse(java.lang.String)]parse[/url]:
Flow
"dd-MM-yyyy HH:mm"
Date data = format.parse("20-02-2005 23:30");GOSTEI 0
Tony Christopher
09/04/2009
public String getDiaSemanaDescritivo(Timestamp data){
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(data);
String[] diaSemana = new String[]{"Domingo","Segunda-feira",
"Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"};
return diaSemana[calendar.get(GregorianCalendar.DAY_OF_WEEK)];
}
GOSTEI 0