Jump to content
Sign in to follow this  
bsr

Classe GregorianCalendar

Recommended Posts

bsr

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.

Share this post


Link to post
Share on other sites
Baderous

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

Share this post


Link to post
Share on other sites
Knitter

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.

Share this post


Link to post
Share on other sites
bsr

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.

Share this post


Link to post
Share on other sites
bsr

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.

Share this post


Link to post
Share on other sites
Knitter

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.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.