• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

bsr

Classe GregorianCalendar

6 mensagens neste tópico

Ola.

Qual é o formato de introução de uma data pertencente a esta classe (quero fazer uma instancia desta classe), ja pus 2009-05-10, ja pus 2009/05/10 e da-me sempre o erro found int but expected java.util.GregorianCalendar.

Sei que esta duvida deve ser basica mas agradecia que me ajudassem.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Penso que tens de indicar os campos um a um.

GregorianCalendar data = new GregorianCalendar();
data.set(GregorianCalendar.YEAR,2009);
data.set(GregorianCalender.MONTH,05);
data.set(GregorianCalendar.DAY_OF_MONTH,10);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estás a tentar introduzir esse valor onde?

Dependendo de como estás a criar o código podes ter já a data que precisas, o calendário quando é criado usando o construtor sem argumentos fica com a data do sistema na altura da instanciação, ou podes usar um dos vários construtores que ter permite especificar os valores, não precisas criar o calendário e depois ir campo a campo colocar o valor.

Se pretende alterar a data de um calendário que já está criado, então podes usar o método que o Baderous te indicou, embora possas também usar o setDate que aceita o valor da data como um long.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu tenho uma classe que precisa de usar data, preciso registar uma data inicial por isso crei uma variavel de instancia "private GregorianCalendar dataInicio;"

A ideia é ao criar uma instancia da classe principal lhe fornecer a dataInicio, so que, como ja referi ja tentei por 2009/05/10 e também 2009-05-10 e da-me sempre o erro que referi.

Deve haver uma maneira de alterar tudo junto, penso eu.

Eu sei que se calhar dava para criar um metodo que recebe-se como parametros o dia, mes e ano e depois usaria o metodo da api "void set(int campo, int valor)", mas a ideia é dar uma data e alterar logo.

Não sei se o que sugeri funciona.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

As variaveis de instancia e os contrutores são os seguintes:

import java.util.GregorianCalendar;

public class ContaPrazo
{

/** Variaveis de instancia (sempre privadas) */

    private String codigo;
    private String titular;
    private int prazo;    
    private double taxa;    // taxa para o prazo
    private double capital;
    private GregorianCalendar dataInicio;
    private GregorianCalendar dataJuros;

/** Construtor Vazio - Redefine construtor por omissão*/

    public ContaPrazo(){
        codigo = "";
        titular = "";
        prazo = 0;
        taxa = 0.0;
        capital = 0.0;
     }

/** Contrutor das partes*/

    public ContaPrazo(String tit, String cod, int dias, double tax, double montante, GregorianCalendar dInicio, GregorianCalendar dJuros){
        titular = tit;
        codigo = cod;
        prazo = dias;
        taxa = tax;
        capital = montante;
        dataInicio = new GregorianCalendar();
        dataJuros = (GregorianCalendar) dataInicio.clone(); 
        dataJuros.add(GregorianCalendar.DAY_OF_MONTH, prazo); 
    }

/** Construtor de copia */

    public ContaPrazo(ContaPrazo cont){
        titular = cont.getTitular();
        codigo = cont.getCodigo();
        prazo = cont.getPrazo();
        taxa = cont.getTaxa();
        capital = cont.getCapital();
        dataInicio = cont.getDataInicio();
        dataJuros = cont.getDataJuros();
    }

Da maneira que o codigo foi feito ao criar uma instancia da ContaPrazo tenho de inserir a dataInicio e dataJuros, ja experimentei os formatos que referi e da sempre o erro que também ja referi.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Formatos que indicaste? Não estou a perceber bem o que estás a passar para o calendário.

Pegando no teu código, iria construir uma ContaPrazo da seguinte forma:

ContaPrazo cp = new ContaPrazo("Knitter", "COD1", 20, 0.4, 5000, new GregorianCalendar(2009, 4, 10), new GregorianCalendar(2009, 6, 10) ;

Os valores foram meramente aleatórios, e podes construir as instâncias de GregorianCalendar noutro lado sem ser directamente na chamada ao construtor da classe ContaPrazo, como fiz.

Já agora, redefinir o construtor por omissão para fazer o que ele já faz é algo inútil, é imposição ou escolheste fazer assim? Mais simples que fazer um clone será mesmo instanciares um calendário novo, pelo que está no código, o clone não te está a servir para nada.

Como nota final, no construtor de cópia não precisas usar os métodos get se esses não fizerem validações ou outras operações importantes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora