Como saber as datas da semana do mês

Galera, agora q consegui postar um novo, o Andre estava me ajudando na minha duvida porém ainda não consegui resolver, estou precisando saber as datas das semanas de segunda a sexta tipo:
no mês que estamos OUTUBRO:

01 semana
01/10/2010 a 01/10/2010

02semana:
04/10/2010 a 08/10/2010

03semana:
11/10/2010 a 15/10/2010

E assim por diante

Alguem pode me ajudar, já pesquisei no forum mas não encontrei nada ainda.

Willian,

Você quer saber quais os dias da semana?
Ou você quer colocar, por exemplo:

Mes: Outubro
Dias da Semana: Segunda a sexta
Ai mostra todos os dias de segunda a sexta. É isso?

http://download.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html

Olá,
Quero saber a data da semana,tipo quero saber o periodo das semanas dentro dos meses. por exemplo:

se um mês tem,por exemplo, 4 semanas. quero saber quais as datas das semanas de segunda a sexta.

1 semana
04/10/2010 a 08/10/2010
.
.
.

sabendo isso vou saber tambem o final de semana - sabado e domingo -

expliquei bem?!? :smiley:

OI Will…
Bom, nosso objetivo aqui não é “Fazer o código” e sim ajudar.

Vou dar o “pontapé” inicial ok?rs
Ai dps é com você e conforme for, vou ajudando.

Bom, para calcular a quantidade de semanas de um mes o calculo é o seguinte:

Calendar cal = new GregorianCalendar();	
 int mes = 10;//Aqui voce digita o mes que deseja descobrir
                int mesF = mes -1;//O mes, no Calendar, vai de 0 a 11, por isso fazemos essa "continha", ou seja, se voce deseja saber sobre o mês 10,pelo Calendar você teria que digitar 9, para não ter esse problema,é feito essa conta.
                cal.set(2010,mesF,15); //Isso daqui você utilizará caso vc nao queira pegar a data atual. 
                int semanas = cal.getActualMaximum(Calendar.WEEK_OF_MONTH); //Aqui mostra quantas semanas tem no determinado mês
System.out.println("O mes tem " + semanas + " semanas ");

Bom, esse é o pontapé inicial. Ai agora é contigo… estou aqui para ir ajudando e lembrando:
http://download.oracle.com/javase/1.4.2/docs/api/java/util/GregorianCalendar.html
http://download.oracle.com/javase/1.4.2/docs/api/java/util/Calendar.html

Isso irá te Ajudar mto

Olá dsystem, Consegui fazer umas coisinhas aqui, mas consegui pegar so a data da semana corrente, das outras semanas não consegui, vou postar o código:

[code]private static Date resolvePrimeiroUltimo(Date data, boolean isPrimeiro) {

    GregorianCalendar calendar = new GregorianCalendar();
    calendar.setTime(data);
    if (isPrimeiro) {
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
    } else {
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
    }
    return calendar.getTime();
}    // FIM DO TESTE DA SEMANA[/code]

e chamo aqui ó:

[code]//TESTE PARA SABER O DIA DA SEMANA

    Date date = new Date();
    Date primeiro = resolvePrimeiroUltimo(date, true);
    String sprimeiro = dataAtualGregorianCalendar(primeiro);
    Date ultimo = resolvePrimeiroUltimo(date, false);
    String sultimo = dataAtualGregorianCalendar(ultimo);
    System.out.println(sprimeiro + " - " + sultimo);

[/code]

Pode ver que ele está trazendo a data de segunda e sexta desta semana, porém não consigo pegar das outras semanas.

essa mesma lógica vou usar pra saber os finais de semana - sabado e domingo.

valeu pela ajuda.

Você consegue postar o seu código completo para eu tentar executar e vê se consigo te ajudar pra ele fazer o que você deseja?

dsystem, abaxi está todo meu código:

package CamadaNegocio;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.text.DateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import javax.swing.JOptionPane;

public class Frequencias {

    public String getMes() {
        return mes;
    }

    public void setMes(String mes) {
        this.mes = mes;
    }

    public String getMatricula() {
        return matricula;
    }

    public void setMatricula(String matricula) {
        this.matricula = matricula;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
    private Statement stam;
    private String frequencia;
    private String st;
    private ResultSet rs;
    private String dataInicial;
    private String dataFinal;
    private String nome;
    private String matricula;
    private String mes;

    public String getDataFinal() {
        return dataFinal;
    }

    public void setDataFinal(String dataFinal) {
        this.dataFinal = dataFinal;
    }

    public String getDataInicial() {
        return dataInicial;
    }

    public void setDataInicial(String dataInicial) {
        this.dataInicial = dataInicial;
    }

    public String getFrequencia() {
        return frequencia;
    }

    public void setFrequencia(String frequencia) {
        this.frequencia = frequencia;
    }

    public Statement getStam() {
        return stam;
    }

    public void setStam(Statement stam) {
        this.stam = stam;
    }

    public Frequencias(Connection con) {
        try {
            stam = con.createStatement();
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Não foi criada a Statement de Aluno");
        }
    }

    //Inicio comanado para pesquisar Frequencia x Idade
    public ResultSet pesquisar() {

        st = "SELECT KERBEROS_FREQUENCIA_CONTAGEM.CODIGO_CLIENTE, SOCIUS_ASSOCIADOS.NO_CLIENTE, SOCIUS_ASSOCIADOS.IDADE_ANOS, KERBEROS_FREQUENCIA_CONTAGEM.FREQ_MES_ANT FROM SOCIUS_ASSOCIADOS JOIN KERBEROS_FREQUENCIA_CONTAGEM ON SOCIUS_ASSOCIADOS.CO_CLIENTE = KERBEROS_FREQUENCIA_CONTAGEM.CODIGO_CLIENTE WHERE FREQ_MES_ANT > '" + getMes() + "' ORDER BY IDADE_ANOS,FREQ_MES_ANT";
        try {
            rs = stam.executeQuery(st);
            return rs;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Não foi possivel gerar a Consulta");
            return null;

        }
    }
    //FIM

    public String dataAtualGregorianCalendar(Date data) {
        DateFormat formata = DateFormat.getDateInstance();
        String resultado = formata.format(data);
        System.out.println("--");
        System.out.println("--");
        System.out.println("Data de Hoje é --> " + resultado);
        System.out.println("--");
        System.out.println("--");

        return resultado;
    }

    //TESTE PARA SABER AS SEMANAS
    private static Date resolvePrimeiroUltimo(Date data, boolean isPrimeiro) {

        GregorianCalendar calendar = new GregorianCalendar();
        calendar.setTime(data);
        if (isPrimeiro) {
            calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        } else {
            calendar.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
        }
        return calendar.getTime();
    }    // FIM DO TESTE DA SEMANA


    //Inicio comando para pesquisar nome,data,matricula
    public ResultSet frequencia() throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        sdf.setLenient(false);
        Date dataIni = sdf.parse(this.getDataInicial());
        Date dataFin = sdf.parse(this.getDataFinal());
        String d1 = dataAtualGregorianCalendar(dataIni); // data do dia dataAtual.getTime()
        String d2 = dataAtualGregorianCalendar(dataFin);

        //TESTE PARA SABER O DIA DA SEMANA

        Date date = new Date();
        Date primeiro = resolvePrimeiroUltimo(date, true);
        String sprimeiro = dataAtualGregorianCalendar(primeiro);
        Date ultimo = resolvePrimeiroUltimo(date, false);
        String sultimo = dataAtualGregorianCalendar(ultimo);
        System.out.println(sprimeiro + " - " + sultimo);

        //============================================

        //PRIMEIRO E ULTIMO DIA DO MÊS
        Calendar dataAtual = Calendar.getInstance();
        Calendar primeiroDia = Calendar.getInstance();
        Calendar ultimoDia = Calendar.getInstance();

        //1º dia do mês atual
        primeiroDia.add(Calendar.DAY_OF_MONTH, -dataAtual.get(Calendar.DAY_OF_MONTH));
        primeiroDia.add(Calendar.DAY_OF_YEAR, 1);
        String primeirodia = dataAtualGregorianCalendar(primeiroDia.getTime());
        System.out.println(dataAtualGregorianCalendar(primeiroDia.getTime()));

        //Ultimo dia do mês atual
        ultimoDia.add(Calendar.MONTH, 1);
        ultimoDia.add(Calendar.DAY_OF_MONTH, -dataAtual.get(Calendar.DAY_OF_MONTH));
        String ultimodia = dataAtualGregorianCalendar(ultimoDia.getTime());
        System.out.println(dataAtualGregorianCalendar(ultimoDia.getTime()));
        //============================================
        System.out.println("o primeiro dia é :" + primeirodia + " o ultimo dia é: " + ultimodia);


        //========================= TESTESTESTES ==============================
        
        //QUANTIDADE DE SEMANA NO MêS
        //-- INICIO
        Calendar cal = new GregorianCalendar();
        int Omes = 10;//Aqui voce digita o mes que deseja descobrir
        int mesF = Omes - 1;//O mes, no Calendar, vai de 0 a 11, por isso fazemos essa "continha", ou seja, se voce deseja saber sobre o mês 10,pelo Calendar você teria que digitar 9, para não ter esse problema,é feito essa conta.        
        int semanas = cal.getActualMaximum(Calendar.WEEK_OF_MONTH); //Aqui mostra quantas semanas tem no determinado mês        
        System.out.println("O mes tem " + semanas + " semanas ");
        //--FIM

        

        //CASO EU CONSIGA PEGAR AS SEMANAS ENTRARIA AQUI
        //------ 1 - SEMANA
        st = "select kerberos_transito.codigo_cliente, socius_associados.no_cliente, Kerberos_transito.data_transito from kerberos_transito join socius_associados on kerberos_transito.codigo_cliente = socius_associados.co_cliente where data_transito >= '1-SEMANAINICIO' and data_transito <= '1-SEMANAFIM' ";
        //------ 2 - SEMANA
        st = "select kerberos_transito.codigo_cliente, socius_associados.no_cliente, Kerberos_transito.data_transito from kerberos_transito join socius_associados on kerberos_transito.codigo_cliente = socius_associados.co_cliente where data_transito >= '2-SEMANAINICIO' and data_transito <= '2-SEMANAFIM' ";
        //------ 3 - SEMANA
        st = "select kerberos_transito.codigo_cliente, socius_associados.no_cliente, Kerberos_transito.data_transito from kerberos_transito join socius_associados on kerberos_transito.codigo_cliente = socius_associados.co_cliente where data_transito >= '3-SEMANAINICIO' and data_transito <= '3-SEMANAFIM' ";
        
        //FIM
        
        //st = "select kerberos_transito.codigo_cliente, socius_associados.no_cliente, Kerberos_transito.data_transito from kerberos_transito join socius_associados on kerberos_transito.codigo_cliente = socius_associados.co_cliente where data_transito >= '20100901' and data_transito <= '20100902' ";
        //st = "st = "select kerberos_transito.codigo_cliente, socius_associados.no_cliente, Kerberos_transito.data_transito from kerberos_transito join socius_associados on kerberos_transito.codigo_cliente = socius_associados.co_cliente where CONVERT (VARCHAR(10),data_transito,103) >= '"+d1+"' and CONVERT (VARCHAR(10),data_transito,103) <= '"+d2+"' and no_cliente like '%"+this.getNome()+"%' and codigo_cliente like '"+this.getMatricula()+"%' order by codigo_cliente";
        //SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd"); //invertido
        try {

            rs = stam.executeQuery(st);
            return rs;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Não foi possivel gerar a Consulta");
            return null;
        }
    }

    public ResultSet atualizafreq() {

        st = "select * from algo";
        try {
            rs = stam.executeQuery(st);
            return rs;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Não foi possivel atualizar as frequencias");
            return null;
        }
    }
}

Coloquei os selects que irei fazer, caso consiga pegar as datas da semana. vlw!

Willian…
Demorei mas voltei…
Estive tentando fazer alguma coisa para te ajudar…

Não sei se isso te ajudará muito, mas consegui fazer um código no qual você digita o mês e ano e ele te retorna do primeiro ao ultimo dia do mês com todos os dias da semana…
Vê se isso te ajuda em algo.rs


import java.text.DateFormat;
import java.text.DateFormatSymbols;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Locale;
import javax.swing.JOptionPane;

public class Data {

    public static void main(String[] args) throws ParseException {
      //  Scanner teclado = new Scanner(System.in);
       // System.out.println("Inform o mês e o ano que deseja consultar... Formato da Data MM/yyyy");
        String s = "";

      //  s = teclado.nextLine();
        s = JOptionPane.showInputDialog(null,"Inform o mês e o ano que deseja consultar... Formato da Data MM/yyyy");
        String separador[];
        
        separador = s.split("/");
        //Fiz uma separação para que eu soubesse o que era mês e o que era ano. 
        // A separação deles eu determinei que fosse feito pela '/'.
        String mesS = separador[0];
        String anoS = separador[1];


        DateFormat formatter = new SimpleDateFormat("MM/yyyy");
        Date date = (Date) formatter.parse(s);
        int mesF = Integer.parseInt(mesS);


        int mes = mesF - 1;//Como havia explicado da outra vez, a numeração dos meses é de 0 a 11.
        int ano = Integer.parseInt(anoS);
        Calendar cal = new GregorianCalendar();
        //cal.set(ano, mes, 1); 

        String ultimoDiaDoMes = String.valueOf(cal.getActualMaximum(Calendar.DAY_OF_MONTH));

        String formato = "dd/MM/yyyy";
        SimpleDateFormat df = new SimpleDateFormat(formato); //Formata a Data para "dd/MM/yyyy"

        String[] DIA_SEMANA_EXTENSO = new DateFormatSymbols(new Locale("pt", "BR")).getWeekdays(); //Isso é o que mostrará os dias da semana 

        List listaDosDias = new ArrayList();
        //A variável i dentro do for inicia em 1 pois é certo que todo mes começa no dia 1.Correto?rs
        //Ele irá fazer o for enquanto a variavel ir for menor ou igual ao ultimo dia do mes.
        for (int i = 1; i <= Integer.parseInt(ultimoDiaDoMes); i++) {
            String dia;
            dia = String.valueOf(i) + "/" + String.valueOf(mesF) + "/" + String.valueOf(ano); //Aqui eu fiz uma concatenação para mostrar da seguinte forma "dd/MM/yyyy"
            date = df.parse(dia);
            Calendar c = Calendar.getInstance();
            c.setTime(date);   //Essa linha aqui é responsável por mostrar qual é o dia da semaan referente a data. Sem ele, o programa mostrará somente o dia da semana do dia atual
            String diaDaSemana = DIA_SEMANA_EXTENSO[c.get(Calendar.DAY_OF_WEEK)];

            //System.out.println("Dia do mês " + dia + " -- Dia da Semana:  " + diaDaSemana);
            //JOptionPane.showMessageDialog(null,"Dia do mês " + dia + " -- Dia da Semana:  " + diaDaSemana);
            listaDosDias.add("Dia do mês " + dia + " -- Dia da Semana:  " + diaDaSemana + "\n");
        }
            JOptionPane.showMessageDialog(null,listaDosDias);



    }
}

É só copiar e compilar…

Desculpa alguma coisa…É que sou meio q iniciante em Java =/

Ah, o código está meio que grande. tem coisas que dá pra simplificar, mas para que desse pra você entender,deixei assim mesmo…

Fala dsystem, ajudou muito teu código, coloquei um if e agora sei todas as segundas e sexta, porem não sei como separar:

if(diaDaSemana == "Segunda-feira"){ System.out.println(dia); }

Queria que cada dia fosse gravado em uma variavel diferente.

Mas valeu… já ajudou bastante… vou trabalhar em cima do teu código agora.

abraços []

Você quer que grave em uma variavel separada cada dia dia msm ou dia da semana ?
rs

Bjs
Dani Leão!

Isso mesmo Dani,

usando seu codigo,e colocando o if else que lhe falei, consigo imprimir no console os dias
o meu código é

[code]if(diaDaSemana == “Segunda-feira”){
System.out.println(dia);
}else if (diaDaSemana == “Sexta-feira”){
System.out.println(dia);

         }[/code]

No console Imprime:

1/10/2010
4/10/2010
8/10/2010
11/10/2010
15/10/2010
18/10/2010
22/10/2010
25/10/2010
29/10/2010

queria que ficasse assim:

Date data1 = 01/10/2010

Date data2 = 04/10/2010

Date data3 = 08/10/2010

e assim por diante…

com isso vou conseguir jogar as datas no local certo na minha select.

:wink:

Bom, como vc não sabe ao certo quantos dias cai, por exemplo, em uma segunda feira, creio que você teria que fazer um Array de String…Ficaria mais ou menos assim

String[] datas

Ai você faria o if(ou um switch case) e colocaria,para cada data, uma posição. Provavelmente terá que ter um for tb, para cada posição. Ai dpois pra você chamar as datas, você chamaria pela posição.

Creio que seria isso…

Mas uma pergunta,pq você quer que tenha uma variável pra cada data?

Poisé Dani, vou lhe explicar, é que estou fazendo consulta sql, onde tenho que gerar um relatorio semanal… tenho um banco onde fica registrado os acessos dos associados do clube, então tenho q montar um relatorio onde as semanas sejam pesquisadas automaticamente, o que eu estou pensando é o seguinte:

select kerberos_transito.codigo_cliente, socius_associados.no_cliente, Kerberos_transito.data_transito from kerberos_transito join socius_associados on kerberos_transito.codigo_cliente = socius_associados.co_cliente where data_transito >= ‘20100901’ and data_transito <= ‘20100902’

Essa é minha select, onde estão as datas vou colocar as datas que consegui com seu código, para gerar o resultado. Como sou iniciante, essa foi a forma que pensei em resolver meu problema.

para cada semana teria uma select com as datas respctivas. vc me sugere algo diferente? estou no raciocinio certo?

obrigado.

Então, olha eu tb sou iniciante, e acho que uma coisa que sempre peno é na hora de consulta com datas.

Eu sinceramente não sei te dizer se é certo ou errado, mas mesmo com pouco tempo na área de programação, aprendi que o Java está aqui para nos ajudar e simplificar e não para confundir…

Esse código que fizemos creio que seja um pouco complexo para sua consulta.

Me responda uma coisa:

  • Essa data você irá pegar de onde?

Porque assim, digamos que você queira digitar somente o mês e o ano(como te mostrei) aí ele fará a consulta pra você…Seria isso?

Outra coisa que eu ainda não entendi… O Por que você quer colocar uma data em cada variável? Porque com isso você teria um consumo de memória muito alto, sem falar na lerdeza que seria seu sistema. É necessário mesmo que você guarde tudo isso?

Vamos tentar achar uma solução melhor pra ti!

Realmente trabalhar com datas é complicado, bom o que acontece:

1º vamos esquecer da variavel (rsrrssr).

minha intenção das datas é o seguinte. não quero que o usuario final insira os periodos, já que já sei que o periodo é de segunda a sexta e outro aos finais de semanas. a intenção é que o sistema que estou fazendo "fale’ para o seletc quais datas que vai ser pesquisadas, é o que você falou. irei informar só o mês e o ano e o resto é por conta do sistema.

Só para as ideias fluirem, fiz um relatorio da seguinte forma: peguei alguns selects fazendo o count deles, para obter um resultado geral e coloquei dentro de outro select para ficar uma consulta de selects. bom… fim isso pq meu relatorio é baseado em numero final, vamos supor q no periodo da 1º semana tivemos 1048 acessos, não vai me enteressar NESSE relatorio quem foi, mas sim esse total.

como estou usando o swing (quero sair dele, mas meu tempo é curto e ele é pratico) tenho q montar as selects e colocar no relatorio e trabalhar em cima dela.

a outra opção seria eu disponibilizar para o usuario colocar os periodos.

há… Dani , pensei em uma opção no começo que desisti pq não consegui fazer, mas talvez vc consiga, como eu consigo saber o 1º dia do mês - como vc viu - eu queria fazer um calcula no qual somasse 7 dias emcima do primeiro, depois 7 ecima do resultado do primeiro e assim por diante… será que funfa??

:?:

Will(Olha só a intimidade…rs)

Então, como estou indo para a facul, ai não consegui pensar no resto
Mas fiz uma coisinha aqui pensando na ultima parte que você falou, de somar +7

Vou colocar o código aqui ai depois eu penso melhor sobre como fazer a consulta ok?

[code]import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import javax.swing.JOptionPane;

public class Main {

public static void main(String[] args) throws ParseException {

    String s = "";

    s = JOptionPane.showInputDialog(null, "Inform o mês e o ano que deseja consultar... Formato da Data dd/MM/yyyy");
    String separador[];

    separador = s.split("/");

    int day = Integer.parseInt(separador[0]);
    String mesS = separador[1];
    String anoS = separador[2];



    DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
    Date date = (Date) formatter.parse(s);
    int mesF = Integer.parseInt(mesS);


    int mes = mesF - 1;//Como havia explicado da outra vez, a numeração dos meses é de 0 a 11.
    int ano = Integer.parseInt(anoS);
    Calendar cal = new GregorianCalendar();
    //cal.set(ano, mes, 1); 
    int primeiroDiaMes = 0;
    primeiroDiaMes = (cal.getActualMinimum(Calendar.DAY_OF_MONTH));
    int ultimoDiaDoMes = (cal.getActualMaximum(Calendar.DAY_OF_MONTH));

    System.out.println("Primeiro dia " + primeiroDiaMes);
    System.out.println("Ultimo dia " + ultimoDiaDoMes);
    int dia = 0;
    List listarTodosOsDias = new ArrayList();
     for(int i=day;i<ultimoDiaDoMes;i+=7){
        
       listarTodosOsDias.add(i + "/" + mes + "/" + ano + "\n");
       day = i;
    }

    }
    JOptionPane.showMessageDialog(null, "Os dias são " + listarTodosOsDias);


}

}[/code]

Bom, fiz usando a mesma base do que ja havia te mandando…Isso fará o seguinte: você digita o dia, mes e ano ai ele irá te mostrar todos os dias de 7 em 7 a partir do dia que você digitou.

Sei que é ralezão mas foi a idéia que vc pensou…rs
Atente para o seguinte: A data que antes era só mes e ano agora é dia tá?>

Dan… Danizinha (já q já estamos intimos… :smiley: ) to respondendo agora pq fui pra facul ontem tbm, e estava tentando resolver, nem dormir ontem pensando nisso , rssrrsr, mas por fim consegui o q queria, apesar do codigo ter ficado um pouco “estranho” funfou… você é muito “safo” mesmo (aqui chamamos uma pessoa inteligente de - safo) muito obrigado pela ajuda, vou postar o código, trabalhei com os códigos que vc me passou, ve ae, e caso tenha algo de errado me fala, blz:

package CamadaNegocio;


import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DateFormat;
import java.text.DateFormatSymbols;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Locale;
import javax.swing.JOptionPane;


public class Data {    
    private Connection con;
    Statement stam;
    
    public Data (Connection con) {
        try {
            stam = con.createStatement();
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Não foi criada a Statement");
        }
    }

    public String dataAtualGregorianCalendar(Date data) {
        DateFormat formata = DateFormat.getDateInstance();
        String resultado = formata.format(data);
        return resultado;
    }

    public void dataSemanal() throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        sdf.setLenient(false);
        Date dateHj = new Date();
        String d1 = dataAtualGregorianCalendar(dateHj);

        String s = "";
        s = d1;
        
        String separador[];

        separador = s.split("/");

        int day = Integer.parseInt(separador[0]);
        String mesS = separador[1];
        String anoS = separador[2];

        DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
        Date date = (Date) formatter.parse(s);
        int mesF = Integer.parseInt(mesS);
        
        int ano = Integer.parseInt(anoS);
        Calendar cal = new GregorianCalendar();
        int primeiroDiaMes = 0;
        primeiroDiaMes = (cal.getActualMinimum(Calendar.DAY_OF_MONTH));
        int ultimoDiaDoMes = (cal.getActualMaximum(Calendar.DAY_OF_MONTH));

        //===========================

        String formato = "dd/MM/yyyy";
        SimpleDateFormat df = new SimpleDateFormat(formato); //Formata a Data para "dd/MM/yyyy"

        String[] DIA_SEMANA_EXTENSO = new DateFormatSymbols(new Locale("pt", "BR")).getWeekdays(); //Isso é o que mostrará os dias da semana

        List listaDosDias = new ArrayList();
        //A variável i dentro do for inicia em 1 pois é certo que todo mes começa no dia 1.Correto?rs
        //Ele irá fazer o for enquanto a variavel ir for menor ou igual ao ultimo dia do mes.
        for (int i = 1; i <= ultimoDiaDoMes; i++) {
            String dia;
            dia = String.valueOf(i) + "/" + String.valueOf(mesF) + "/" + String.valueOf(ano); //Aqui eu fiz uma concatenação para mostrar da seguinte forma "dd/MM/yyyy"
            date = df.parse(dia);
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            String diaDaSemana = DIA_SEMANA_EXTENSO[c.get(Calendar.DAY_OF_WEEK)];

            //SABER QUANTAS SEMANAS TEM O MES
            int Omes = mesF;
            int semanas = cal.getActualMaximum(Calendar.WEEK_OF_MONTH); //Aqui mostra quantas semanas tem no determinado mês
            System.out.println("O mes tem " + semanas + " semanas ");

            //=====================================


//OS IF's E ELSE's É PARA IDENTIFICAR QUANDO CAI O PRIMEIRO DIA DO MES PARA FUNCIONAR O CALCULO Q FIZ
            if (diaDaSemana == "Segunda-feira") {
                
                //01-SEMANA
                int iniPrimeiraSemana = primeiroDiaMes;
                int finPrimeiraSemana = iniPrimeiraSemana + 4;
                System.out.println("Primeira semana -  primeiro dia: " + iniPrimeiraSemana);
                System.out.println("Primeira semana -  ultimo dia: " + finPrimeiraSemana);

                //02-SEMANA
                int iniSegundaSemana = finPrimeiraSemana + 3;
                int finSegundaSemana = iniSegundaSemana + 4;
                System.out.println("Segunda semana -  primeiro dia: " + iniSegundaSemana);
                System.out.println("Segunda semana -  ultimo dia: " + finSegundaSemana);

                //03-SEMANA

                int iniTerceiraSemana = finSegundaSemana + 3;
                int finTerceiraSemana = iniTerceiraSemana + 4;
                System.out.println("Terceira semana -  primeiro dia: " + iniTerceiraSemana);
                System.out.println("Terceira semana -  ultimo dia: " + finTerceiraSemana);

                //04-SEMANA

                int iniQuartaSemana = finTerceiraSemana + 3;
                int finQuartaSemana = iniQuartaSemana + 4;
                System.out.println("Quarta semana -  primeiro dia: " + iniQuartaSemana);
                System.out.println("Quarta semana -  ultimo dia: " + finQuartaSemana);

                //05-SEMANA -- O IF É PRA SABER SE O MES TEM 5 SEMANA - JÁ Q FEVEREIRO SÓ TEM 4
                    if(semanas == 5){
                int iniQuintaSemana = finQuartaSemana + 3;
                int finQuintaSemana = iniQuintaSemana + 4;
                System.out.println("Quinta semana -  primeiro dia: " + iniQuintaSemana);
                System.out.println("Quinta semana -  ultimo dia: " + finQuintaSemana);
                    }
                break;

            } else if (diaDaSemana == "Terça-feira") {
               
                //01-SEMANA
                int iniPrimeiraSemana = primeiroDiaMes;
                int finPrimeiraSemana = iniPrimeiraSemana + 3;
                System.out.println("Primeira semana -  primeiro dia: " + iniPrimeiraSemana);
                System.out.println("Primeira semana -  ultimo dia: " + finPrimeiraSemana);

                //02-SEMANA
                int iniSegundaSemana = finPrimeiraSemana + 3;
                int finSegundaSemana = iniSegundaSemana + 4;
                System.out.println("Segunda semana -  primeiro dia: " + iniSegundaSemana);
                System.out.println("Segunda semana -  ultimo dia: " + finSegundaSemana);

                //03-SEMANA

                int iniTerceiraSemana = finSegundaSemana + 3;
                int finTerceiraSemana = iniTerceiraSemana + 4;
                System.out.println("Terceira semana -  primeiro dia: " + iniTerceiraSemana);
                System.out.println("Terceira semana -  ultimo dia: " + finTerceiraSemana);

                //04-SEMANA

                int iniQuartaSemana = finTerceiraSemana + 3;
                int finQuartaSemana = iniQuartaSemana + 4;
                System.out.println("Quarta semana -  primeiro dia: " + iniQuartaSemana);
                System.out.println("Quarta semana -  ultimo dia: " + finQuartaSemana);

                //05-SEMANA
                    if(semanas == 5){
                int iniQuintaSemana = finQuartaSemana + 3;
                int finQuintaSemana = iniQuintaSemana + 4;
                System.out.println("Quinta semana -  primeiro dia: " + iniQuintaSemana);
                System.out.println("Quinta semana -  ultimo dia: " + finQuintaSemana);
                    }
                break;

            } else if (diaDaSemana == "Quarta-feira") {
                
                //01-SEMANA
                int iniPrimeiraSemana = primeiroDiaMes;
                int finPrimeiraSemana = iniPrimeiraSemana + 2;
                System.out.println("Primeira semana -  primeiro dia: " + iniPrimeiraSemana);
                System.out.println("Primeira semana -  ultimo dia: " + finPrimeiraSemana);

                //02-SEMANA
                int iniSegundaSemana = finPrimeiraSemana + 3;
                int finSegundaSemana = iniSegundaSemana + 4;
                System.out.println("Segunda semana -  primeiro dia: " + iniSegundaSemana);
                System.out.println("Segunda semana -  ultimo dia: " + finSegundaSemana);

                //03-SEMANA

                int iniTerceiraSemana = finSegundaSemana + 3;
                int finTerceiraSemana = iniTerceiraSemana + 4;
                System.out.println("Terceira semana -  primeiro dia: " + iniTerceiraSemana);
                System.out.println("Terceira semana -  ultimo dia: " + finTerceiraSemana);

                //04-SEMANA

                int iniQuartaSemana = finTerceiraSemana + 3;
                int finQuartaSemana = iniQuartaSemana + 4;
                System.out.println("Quarta semana -  primeiro dia: " + iniQuartaSemana);
                System.out.println("Quarta semana -  ultimo dia: " + finQuartaSemana);

                //05-SEMANA
                    if(semanas == 5){
                int iniQuintaSemana = finQuartaSemana + 3;
                int finQuintaSemana = iniQuintaSemana + 4;
                System.out.println("Quinta semana -  primeiro dia: " + iniQuintaSemana);
                System.out.println("Quinta semana -  ultimo dia: " + finQuintaSemana);
                    }
                break;

            } else if (diaDaSemana == "Quinta-feira") {
                //01-SEMANA
                int iniPrimeiraSemana = primeiroDiaMes;
                int finPrimeiraSemana = iniPrimeiraSemana + 1;
                System.out.println("Primeira semana -  primeiro dia: " + iniPrimeiraSemana);
                System.out.println("Primeira semana -  ultimo dia: " + finPrimeiraSemana);

                //02-SEMANA
                int iniSegundaSemana = finPrimeiraSemana + 3;
                int finSegundaSemana = iniSegundaSemana + 4;
                System.out.println("Segunda semana -  primeiro dia: " + iniSegundaSemana);
                System.out.println("Segunda semana -  ultimo dia: " + finSegundaSemana);

                //03-SEMANA

                int iniTerceiraSemana = finSegundaSemana + 3;
                int finTerceiraSemana = iniTerceiraSemana + 4;
                System.out.println("Terceira semana -  primeiro dia: " + iniTerceiraSemana);
                System.out.println("Terceira semana -  ultimo dia: " + finTerceiraSemana);

                //04-SEMANA

                int iniQuartaSemana = finTerceiraSemana + 3;
                int finQuartaSemana = iniQuartaSemana + 4;
                System.out.println("Quarta semana -  primeiro dia: " + iniQuartaSemana);
                System.out.println("Quarta semana -  ultimo dia: " + finQuartaSemana);

                //05-SEMANA
                    if(semanas == 5){                       
                int iniQuintaSemana = finQuartaSemana + 3;
                int finQuintaSemana = iniQuintaSemana + 4;
                System.out.println("Quinta semana -  primeiro dia: " + iniQuintaSemana);
                System.out.println("Quinta semana -  ultimo dia: " + finQuintaSemana);
                    }
                break;

            } else if (diaDaSemana == "Sexta-feira") {

                //01-SEMANA
                int iniPrimeiraSemana = primeiroDiaMes;
                int finPrimeiraSemana = primeiroDiaMes;

                System.out.println("Primeira semana -  primeiro dia: " + iniPrimeiraSemana+"/"+mesF+"/"+ano);
                System.out.println("Primeira semana -  ultimo dia: " + finPrimeiraSemana);

                //02-SEMANA
                int iniSegundaSemana = finPrimeiraSemana + 3;
                int finSegundaSemana = iniSegundaSemana + 4;
                System.out.println("Segunda semana -  primeiro dia: " + iniSegundaSemana);
                System.out.println("Segunda semana -  ultimo dia: " + finSegundaSemana);

                //03-SEMANA

                int iniTerceiraSemana = finSegundaSemana + 3;
                int finTerceiraSemana = iniTerceiraSemana + 4;
                System.out.println("Terceira semana -  primeiro dia: " + iniTerceiraSemana);
                System.out.println("Terceira semana -  ultimo dia: " + finTerceiraSemana);

                //04-SEMANA

                int iniQuartaSemana = finTerceiraSemana + 3;
                int finQuartaSemana = iniQuartaSemana + 4;
                System.out.println("Quarta semana -  primeiro dia: " + iniQuartaSemana);
                System.out.println("Quarta semana -  ultimo dia: " + finQuartaSemana);

                //05-SEMANA
                    if(semanas == 5){
                int iniQuintaSemana = finQuartaSemana + 3;
                int finQuintaSemana = iniQuintaSemana + 4;
                System.out.println("Quinta semana -  primeiro dia: " + iniQuintaSemana);
                System.out.println("Quinta semana -  ultimo dia: " + finQuintaSemana);                
                    }
                break;

            } else { }            
        }

    }
}

assim consigo as semanas, agora vou fazer um para o fim de semana - sabados e domingo - igual a esse, só vou esperar os outros meses para ver se funciona com a lógica q coloquei de somar os dias.

Obrigadão novamente, vc ajudou muito - vou fazer uma porrada de teste agora, quando estiver ok coloco [RESOLVIDO] (vi isso nos outros tópico, rsrsr). vlw.

  • vou concluir essa e vou pra outra - Organizar um arquvo txt que gerei afff.

bjs.
T+ 8)

Olá Will
Então é assim mesmo…

As vezes quebramos a cabeça, pegamos um código aqui outro ali.
Ao meu ver, está correto. Mas você vai ver que, conforme você for aprendendo sobre a linguagem, você vai olhar para esse código e vai ver que muita coisa pode ser melhorada. E isso servirá para o seu aprendizado.

Você está no caminho certo…

Uma dica, sempre que tiver dúvidas(Pode postar com certeza), mas se você tiver conhecimento de inglês, nem que seja um pouquinho, procure no google em inglês. Você vai ver que encontrará materiais rapidão. É assim que faço. E tem dado certo.rs

Bom, eu estarei aqui para ajudar.

Se precisar de alguma coisa a mais, pode me mandar um MP, se tiver gtalk,msn ou skype tb…Pode falar…

De qq forma, continue assim e boa sorte nas proximas duvidas.rs

Bjs!