Como retornar o dia da semana de uma data pregressa por extenso?

8 respostas
M

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

import javax.swing.JOptionPane;
import java.util.Calendar;

         public class Papo {
                public static void main(String[] args) {

                String pais = " ";
                int idade;
                int mes;
                int ano_nascimento;
                int ano_atual;
                String dia_da_semana;
                int dia;
        
                  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 "));

              Calendar calendario = Calendar.getInstance();
                 ano_atual = calendario.get(Calendar.YEAR);
                   ano_nascimento = ano_atual - idade;

               String msg = "Voce nasceu no " + pais + " no ano de " + ano_nascimento + " em um dia de  " + dia_da_semana + "!";

               JOptionPane.showMessageDialog(null, msg);
        }
}

8 Respostas

fredericomaia10

Se não puder usar uma biblioteca pronta pode visualizar o código fonte e entender como funciona.

M

fredericomaia10:
https://github.com/caelum/caelum-stella/wiki/Numeros-por-extenso-core

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:
Date dataAniversario = new Date(); //obtenha essa data do usuário
Calendar cal = Calendar.getInstance();
cal.setTime(date);

cal.get(Calendar.DAY_OF_WEEK); //aqui você já possui o número do dia da semana
ViniGodoy

Complementando:

Calendar cal = Calendar.getInstance();
int diaSemana = 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 semana
DateFormatSymbols symbols = new DateFormatSymbols();
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

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ário
            int dia = 14;
            int mes = 7;
            int ano = 2013;

            SimpleDateFormat fmt = new SimpleDateFormat("dd/MM/yyyy");
            String dataFormatada = String.format("%s/%s/%s", dia, mes, ano);

            Date date = fmt.parse(dataFormatada);

            Calendar cal = Calendar.getInstance();
            cal.setTime(date);

            System.out.println(cal.get(Calendar.DAY_OF_WEEK));

        } catch (ParseException e) {
            e.printStackTrace();
        }
Só juntar com o código do ViniGodoy. E a dica é estudar bem a API do Java SE.
M

fredericomaia10 ,

Muito obrigado!! Agora vai dar certo …

Criado 13 de julho de 2013
Ultima resposta 14 de jul. de 2013
Respostas 8
Participantes 3