Listar variaveis DATE/Calendar

Olá, etou tendo problemas para pegar uma váriavel do tipo Calendar.

Para eu passar para algo essa variavel eu passo calendar para Date e depois pego ele.

E agora para pegar ele?

Não existe um GetCalendar…

Para dar um set eu faço assim:


		            java.sql.Date dt = new java.sql.Date(cliente.getCliedtnasc().getTimeInMillis());  
		  			stmt.setDate(3, dt);

Mais e aora para recuperar esse dado? MUITO OBRIGADO!!

Calendar data = Calendar.getInstance();
data.setTime(rs.getDate(“dataNascimento”));
cliente.setCliedtnasc(data);

João, para persistir em base (é JDBC né?) você deve estar utilizando o java.sql.Date, correto ?
Mas para a manipulação, passagem como parâmetros, porque não utiliza o Calendar ?

É relativamente simples de utilizar e possui o método getTime(), que lhe retorna a data (java.util.Date). Veja exemplo:

Calendar calendar = Calendar.getInstance(); java.utilDate date = new java.util.Date( new java.sql.Date(cliente.getCliedtnasc().getTimeInMillis()).getTime()); calendar.setTime(date);

Agora consegue recuperar esse valor facilmente, bem como manipula-lo.
Abraços.

Alguem poderia me ajudar enquanto a isso ?!

  1. Simulação de Atendimento Bancário (Aplicação de FILA)

Obs.:

  • Devem ser seguidos os princípios e características de funcionamento do TAD, ou
    seja, FIFO ou FILO. Os métodos da Pilha e Fila não devem ser alterados. A lógica do
    problema deve ser escrita na classe principal que contenha o método estático main
    utilizando o TAD.
  • Se necessário, altere o TAD Pilha e Fila para que possam armazenar corretamente os
    dados, ou seja, o conteúdo de cada posição de acordo com o pedido, por exemplo,
    string ou Cliente.
  • A implementação deve ser feita em linguagem Java;

Simulação de Atendimento Bancário

Deverá implementar um algoritmo que determine o tempo médio que um cliente
permanece na fila de uma agência bancária. Quando um cliente entra na fila, o horário é
anotado. Quando ele sai, o tempo que ele permaneceu na fila é calculado e adicionado ao
tempo total de espera. Assim, no final do expediente, é possível determinar quanto tempo,
em média, cada cliente teve que aguardar para ser atendido.
Cenário da Simulação

Na agência há três guichês que atendem a uma única fila de clientes. À medida que um
deles ficar livre, o primeiro cliente da fila o utiliza.

Há apenas duas entidades envolvidas na simulação: guichês e clientes. Tudo o que é
necessário saber sobre um guichê é se ele está ocupado e, caso esteja, por quanto tempo
permanecerá ocupado. Inicialmente, todos os guichês estão livres. Quando um cliente inicia
uma transação num deles, o tempo médio necessário para a realização da transação
determina por quanto tempo o guichê permanecerá ocupado.

Transação Código Tempo Médio

Saque 0 60 segundos
Depósito 1 90 segundos
Pagamento 2 120 segundos

Sobre o cliente, só é necessário saber quando ele entrou na fila para que, ao sair, seja
possível calcular quanto tempo ele permaneceu nela.
Algoritmo de Simulação

Na simulação a ser realizada, há dois eventos importantes:
? Um cliente chega à agência e entra na fila.
? Um guichê é liberado, alguém sai da fila e o utiliza.

Em cada instante de tempo, qualquer combinação desses eventos pode ocorrer (ou mesmo
nenhum deles).

Terminou o expediente?
O término do expediente será indicado pelo cronômetro, que marcará o tempo em segundos.
O período de atendimento da agência é de 6 horas, o que corresponde a 21600 segundos.
O expediente termina após este tempo decorrido.

Chegou um cliente?
Para que a simulação seja o mais próximo da realidade, será adotado um valor aleatório
para simular a chegada do cliente.
A cada segundo decorrido, será chamada uma função aleatória que sorteia um valor entre 0
e 29. Caso o número sorteado seja o número 0, isso indica que o cliente chegou. Caso
contrário, o cliente não chegou.

Cliente entra na fila
Um cliente será representado pelo horário em que ele entrou na fila. Logo, inserir um cliente
na fila equivale a simplesmente inserir nela o valor corrente do cronômetro.
Inicia a transação

Quando um guichê é liberado e um cliente se dirige a ele, é necessário saber por quanto
tempo ele ficará ocupado. Esse tempo depende da transação realizada pelo cliente. As
transações realizadas são aleatórias.

Para saber qual será a transação, um número aleatório entre 0 e 2 é gerado. Caso seja
gerado o valor 0, a transação será um saque, caso seja gerado o valor 1, a transação será
um depósito, e caso seja gerado o valor 2, a transação será um pagamento.
Finalização do expediente

Ao final do expediente, caso ainda haja clientes na fila, eles devem ser atendidos.
Quando o expediente tiver terminado e não houver mais clientes na fila, as seguintes
informações devem ser impressas:

? Número total de clientes atendidos.
? Número de clientes que fizeram saque, depósito e pagamento.
? Tempo médio de espera na fila.
? Tempo extra de expediente.

[quote=Alexsandro89]Alguem poderia me ajudar enquanto a isso ?!

  1. Simulação de Atendimento Bancário (Aplicação de FILA)

Obs.:

  • Devem ser seguidos os princípios e características de funcionamento do TAD, ou
    seja, FIFO ou FILO. Os métodos da Pilha e Fila não devem ser alterados. A lógica do
    problema deve ser escrita na classe principal que contenha o método estático main
    utilizando o TAD.
  • Se necessário, altere o TAD Pilha e Fila para que possam armazenar corretamente os
    dados, ou seja, o conteúdo de cada posição de acordo com o pedido, por exemplo,
    string ou Cliente.
  • A implementação deve ser feita em linguagem Java;

Simulação de Atendimento Bancário

Deverá implementar um algoritmo que determine o tempo médio que um cliente
permanece na fila de uma agência bancária. Quando um cliente entra na fila, o horário é
anotado. Quando ele sai, o tempo que ele permaneceu na fila é calculado e adicionado ao
tempo total de espera. Assim, no final do expediente, é possível determinar quanto tempo,
em média, cada cliente teve que aguardar para ser atendido.
Cenário da Simulação

Na agência há três guichês que atendem a uma única fila de clientes. À medida que um
deles ficar livre, o primeiro cliente da fila o utiliza.

Há apenas duas entidades envolvidas na simulação: guichês e clientes. Tudo o que é
necessário saber sobre um guichê é se ele está ocupado e, caso esteja, por quanto tempo
permanecerá ocupado. Inicialmente, todos os guichês estão livres. Quando um cliente inicia
uma transação num deles, o tempo médio necessário para a realização da transação
determina por quanto tempo o guichê permanecerá ocupado.

Transação Código Tempo Médio

Saque 0 60 segundos
Depósito 1 90 segundos
Pagamento 2 120 segundos

Sobre o cliente, só é necessário saber quando ele entrou na fila para que, ao sair, seja
possível calcular quanto tempo ele permaneceu nela.
Algoritmo de Simulação

Na simulação a ser realizada, há dois eventos importantes:
? Um cliente chega à agência e entra na fila.
? Um guichê é liberado, alguém sai da fila e o utiliza.

Em cada instante de tempo, qualquer combinação desses eventos pode ocorrer (ou mesmo
nenhum deles).

Terminou o expediente?
O término do expediente será indicado pelo cronômetro, que marcará o tempo em segundos.
O período de atendimento da agência é de 6 horas, o que corresponde a 21600 segundos.
O expediente termina após este tempo decorrido.

Chegou um cliente?
Para que a simulação seja o mais próximo da realidade, será adotado um valor aleatório
para simular a chegada do cliente.
A cada segundo decorrido, será chamada uma função aleatória que sorteia um valor entre 0
e 29. Caso o número sorteado seja o número 0, isso indica que o cliente chegou. Caso
contrário, o cliente não chegou.

Cliente entra na fila
Um cliente será representado pelo horário em que ele entrou na fila. Logo, inserir um cliente
na fila equivale a simplesmente inserir nela o valor corrente do cronômetro.
Inicia a transação

Quando um guichê é liberado e um cliente se dirige a ele, é necessário saber por quanto
tempo ele ficará ocupado. Esse tempo depende da transação realizada pelo cliente. As
transações realizadas são aleatórias.

Para saber qual será a transação, um número aleatório entre 0 e 2 é gerado. Caso seja
gerado o valor 0, a transação será um saque, caso seja gerado o valor 1, a transação será
um depósito, e caso seja gerado o valor 2, a transação será um pagamento.
Finalização do expediente

Ao final do expediente, caso ainda haja clientes na fila, eles devem ser atendidos.
Quando o expediente tiver terminado e não houver mais clientes na fila, as seguintes
informações devem ser impressas:

? Número total de clientes atendidos.
? Número de clientes que fizeram saque, depósito e pagamento.
? Tempo médio de espera na fila.
? Tempo extra de expediente.
[/quote]

Sim, alguém pode ajuda-lo com isso. Mas para que isso aconteça, tu precisa criar um tópico para você e não pegar carona no de outro.
E já aconselho a postar o que tu tem de código, porque ninguém vai lhe entregar código pronto.

Alexsandro89
O nel tem razão, o GUJ é o melhor forum Java que eu conheço, funciona muito bem graças a muitos usuarios do Forum se preocupar com as regras do mesmo e manter organizado,
issoo que o nel fez é um mal necessario para mantermos organizado.
Pode ter certeza que ate para começar podemos ajudar, so que para isso, o legal seria manter organizado pq sua duvida pode ser a duvida de muitos e seu Post pode ser utilizado por muitos usuarios.
Vlw pela compreensão.

Então, ainda estou meio confuso.

É que eu recupero o dado de um recordSet e incluo ele dentro de uma classe Cliente por exemplo.

Para depois na tela eu pego com o for each esse cliente.

	                	    Calendar calendar = Calendar.getInstance();
	                	    java.util.Date date = new java.util.Date (new java.sql.Date(rs.getTime("cliedtnasc").ge);

Ficou assim porém ainda não compila :confused:

[quote=JoaoMarques]Então, ainda estou meio confuso.

É que eu recupero o dado de um recordSet e incluo ele dentro de uma classe Cliente por exemplo.

Para depois na tela eu pego com o for each esse cliente.

	                	    Calendar calendar = Calendar.getInstance();
	                	    java.util.Date date = new java.util.Date (new java.sql.Date(rs.getTime("cliedtnasc").ge);

Ficou assim porém ainda não compila :confused:

[/quote]

Não é getTime() no final ao invés de .get ?
E se já está getTime(), foi apenas um erro na hora da postagem, que erro indica ? Porque é perfeitamente aceitavél isso. Talvez seja problema seja no rs.getTime().

Simplificando

Calendar calendar = Calendar.getInstance(); //-> objeto Calendar
calendar.setTime(rs.getDate( " dataNascimento " )); //-> recupera um Date do Result e stea o valor para o Calendar pelo setTime que recebe um Date
cliente.setCliedtnasc(calendar); //-> seta o Calendar do Cliente

Então eu mandei o código um pouco errado para voce

[code]
java.util.Date date = new java.util.Date (new java.sql.Date(rs.getTime(“cliedtnasc”));
[/code~]

o erro seria The constructor Date(Date) is undefined, ai ele me da a opção de remover os argumentos do Date, se eu removo ele exclui quase tudo deixa a linha assim :

javautil.Date date = new java.util.Date (;

[quote=JoaoMarques]Então eu mandei o código um pouco errado para voce

[code]
java.util.Date date = new java.util.Date (new java.sql.Date(rs.getTime(“cliedtnasc”));
[/code~]

o erro seria The constructor Date(Date) is undefined, ai ele me da a opção de remover os argumentos do Date, se eu removo ele exclui quase tudo deixa a linha assim :

javautil.Date date = new java.util.Date (;

[/quote]

Você não prestou atenção, faltou o getTime(). A classe java.util.Date não aceita um java.sql.Date no construtor. Tu precisa depois de instanciar dar um getTime() no java.sqlDate, pois ele retorna a data no formato de um long!

Bom vamos lá.

Eu fiquei um pouco confuso quanto a sua reposta.

Eu entendi que o o java.util.date não aceita o jva.sql.Date no construtor então ele não pode ficar assim, porém vc pede para dar um getTime do sql Date… eu pensei assim:

java.util.Date date = new java.util.Date (new java.sql.Date(rs.getTime("cliedtnasc").getTime());

Porém isso cai de novo no fato de o java.util.Date não aceitar o sql.Date como construtor ai eu me confundi foi tudo :confused:

[quote=JoaoMarques]Bom vamos lá.

Eu fiquei um pouco confuso quanto a sua reposta.

Eu entendi que o o java.util.date não aceita o jva.sql.Date no construtor então ele não pode ficar assim, porém vc pede para dar um getTime do sql Date… eu pensei assim:

java.util.Date date = new java.util.Date (new java.sql.Date(rs.getTime("cliedtnasc").getTime());

Porém isso cai de novo no fato de o java.util.Date não aceitar o sql.Date como construtor ai eu me confundi foi tudo :/[/quote]

O método getTime() da classe java.sql.Date retorna um valor do tipo long.
O método construtor sobrescrito Date(long time) da classe java.util.Date aceita, como se vê, um long como argumento.
Logo

java.util.Date dataEmDate = new java.util.Date(new java.sql.Date(rs.getDate("dataSql")).getTime());

É plenamente possível.

Ah, um detalhe, a classe java.util.Date possui a maioria dos métodos já marcados como deprecated, ou seja, em breve ela será descontinuada.
Por isso, opte, sempre que possível, pela interface Calendar e suas implementações, como GregorianCalendar.

java.sql.Date dt = new java.sql.Date();
dt.setDate(rs.getDate(“dataSql”).getDate());

Mesmo sendo metodos deprecated funciona

Obrigado pelas respostas porém ainda não foi…

Isto ainda não funciona…

java.util.Date dataEmDate = new java.util.Date(new java.sql.Date(rs.getDate("cliedtnasc")).getTime());  

Ele insiste no erro The constructor Date(Date) is undefinied .

E mesmo assim na linha que eu dou o set ele tbm reclama.

cliente.setCliedtnasc(date);

Ele fala que precisa ser Calendar…

Muito obrigado mesmo gente. :confused:

Vocês sabem alguma outra alternativa?

[quote=leulseixas]java.sql.Date dt = new java.sql.Date();
dt.setDate(rs.getDate(“dataSql”).getDate());

Mesmo sendo metodos deprecated funciona[/quote]

Se são depreciados, não os use :slight_smile:
JoaoMarques, tu quer o que afinal ? É transformar um java.util.Date em um java.sql.Date? Se sim, é:

java.util.Date date = new Date(); java.sql.Date sqlDate = new java.sql.Date(date.getTime());

Ou seja, a mesma coisa…

Só queria fazer funcionar :confused:

O meu problema é que tenho um Calendar e preciso recupera-lo.

Para todas outra variaveis isto é facil, rs.getString, rs.getLong etc.

Porém para este calendar está dificil.

Se eu tento pegar assim rs.GetDate ele fala que espera um Calendar e não um tipo Date.

Este é o meu problema … eu gostaria de saber como resolver…

Se tenho que criar um date e passar pra calendar ou se tenho que criar um Calendar , estou muito confuso…

[quote=JoaoMarques]Só queria fazer funcionar :confused:

O meu problema é que tenho um Calendar e preciso recupera-lo.

Para todas outra variaveis isto é facil, rs.getString, rs.getLong etc.

Porém para este calendar está dificil.

Se eu tento pegar assim rs.GetDate ele fala que espera um Calendar e não um tipo Date.

Este é o meu problema … eu gostaria de saber como resolver…

Se tenho que criar um date e passar pra calendar ou se tenho que criar um Calendar , estou muito confuso… [/quote]

Vou lhe passar novamente o link do Calendar: http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html

O método getTime() da classe Calendar retorna a data em um objeto java.util.Date. A mesma coisa funciona no método setTime() também da classe Calendar. Tendo isso em mãos e tudo mais que lhe foi passado, clareou as idéias ?

Agradeço aos que tentaram me ajudar eu consegui :).

Caso alguem tenha a mesma dúvida segue o que eu fiz.

Calendar data = Calendar.getInstance();
data.setTime(rs.getDate(“cliedtnasc”));
cliente.setCliedtnasc(data);

Muito obrigado pessoal :slight_smile:

JoaoMarques foi o que eu tinha postado logo em seguida a sua pergunta kkkk

[quote=leulseixas]Calendar data = Calendar.getInstance();
data.setTime(rs.getDate(“dataNascimento”));
cliente.setCliedtnasc(data);[/quote]

Eu concordo com o nel, “Se são depreciados, não os use”
So falei pq poderia funcionar.

E que bom que funcionou JoaoMarques, parabéns