Como retornar o dia da semana de uma data pregressa por extenso?
8 respostas
M
magalha
Boa noite,
Gostaria de uma ajuda com o código abaixo: Gostaria de acrescentar um método que me retornasse o dia da semana, por extenso, de uma data passada, a partir das variáveis dia, mês e ano_nascimento (a serem inseridas pelo usuário através da classe JOptionPane). Seria possível? Já pesquisei em milhares de forum e não consegui! Estou usando a classe correta (Calendar)?
importjavax.swing.JOptionPane;importjava.util.Calendar;publicclassPapo{publicstaticvoidmain(String[]args){Stringpais=" ";intidade;intmes;intano_nascimento;intano_atual;Stringdia_da_semana;intdia;pais=JOptionPane.showInputDialog("Digite o país em que voce nasceu ");idade=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite sua idade "));mes=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o mes voce faz aniversario "));dia=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o dia do seu niver "));Calendarcalendario=Calendar.getInstance();ano_atual=calendario.get(Calendar.YEAR);ano_nascimento=ano_atual-idade;Stringmsg="Voce nasceu no "+pais+" no ano de "+ano_nascimento+" em um dia de "+dia_da_semana+"!";JOptionPane.showMessageDialog(null,msg);}}
Se não puder usar uma biblioteca pronta pode visualizar o código fonte e entender como funciona.
Amigo,
Perdoe-me a ignorancia, pois tratando-se java sou um semi-analfabeto!!
Vou tentar explicar o que preciso: Necessito de um codigo que recebe valores para as variaveis dia e mes (através do teclado). Uma vez com os valores armazenados, juntamente com o valor referente a variavel ano_nascimento (portanto dd/MM/yyyy) seja capaz de informar ao usuario o dia da semana em que ele nasceu.
Exemplo: Que dia da semana (seg, tec, qua, qui, sex, sab ou dom?) caiu 26/01/1978? O usuário ira digitar a idade e através da classe Calendar o codigo calcula o ano de nascimento (como ja esta fazendo), posteriormente o usuario digita o mes de aniversario (01 ou janeiro / int ou string) e por fim digita a data (26 / int ). De posse dessas informaçoes gostaria que o codigo retornasse para o usuario o valor => “quinta-feira”.
Pelo que percebo no link que postou, trata-se de um “conversor” de valores numericos em string. Não seria bem disso que precido… eu acho(rs).
fredericomaia10
Havia entendido errado. =)
Neste caso basta passar uma instância de Date pro seu Calendar e depois pegar o dia da semana. Algo como:
DatedataAniversario=newDate();//obtenha essa data do usuárioCalendarcal=Calendar.getInstance();cal.setTime(date);cal.get(Calendar.DAY_OF_WEEK);//aqui você já possui o número do dia da semana
ViniGodoy
Complementando:
Calendarcal=Calendar.getInstance();intdiaSemana=cal.get(Calendar.DAY_OF_WEEK);//aqui você já possui o número do dia da semana//Aqui você pega o texto do dia da semanaDateFormatSymbolssymbols=newDateFormatSymbols();String[]nomeDia=symbols.getWeekdays();System.out.println(nomeDia[diaSemana]);
Outra forma mais simples é através do String.format (ou, se só vai imprimir, System.out.printf):
String diaSemana = String.format("%A", cal);
fredericomaia10
Legal ViniGodoy. Não conhecia essa classe DateFormatSymbols.
M
magalha
Pessoal,
Muito obrigado pelas aulas!!
Gostaria apenas de mais uma ajudinha se possivel…
Se recebo do usuário, individualmente, o dia do nascimento, o mes do nascimento, e a idade em variáveis declaradas como “int”. Posteriormente, a partir da idade, calculo o ano de nascimento. Ai vem a pergunta … como fazer o metodo sugerido por voces, que vai determinar o dia da semana (seg, ter,qua…etc…), “enxergar” esse valores ja recebidos através da classe Scanner como uma data (dd/MM/yyyy) ?
Em tempo informo que sou iniciante e estou aprendendo sozinho. Desculpem-me se as duvidas são primárias!
grato,
fredericomaia10
try{//Obtenha do Usuáriointdia=14;intmes=7;intano=2013;SimpleDateFormatfmt=newSimpleDateFormat("dd/MM/yyyy");StringdataFormatada=String.format("%s/%s/%s",dia,mes,ano);Datedate=fmt.parse(dataFormatada);Calendarcal=Calendar.getInstance();cal.setTime(date);System.out.println(cal.get(Calendar.DAY_OF_WEEK));}catch(ParseExceptione){e.printStackTrace();}
Só juntar com o código do ViniGodoy. E a dica é estudar bem a API do Java SE.