Como usar datas

COMO DECLARAR UMA DATA EM UM PROGRAMA?

O USUARIO TEM QUE ENTRAR COM A DATA DE COMPRA. COMO DECLARAR ESTA DATA NO PROGRAMA?

Se você é iniciante eu recomento que ele passe tres paramentos

dia, mes e ano

depois vc pega essas tres variaveis e instancia um GregorianCalendar ou qual quer outro calendario

e faça algo do tipo

int dia; 
int mes;
int ano;

GregorianCalendar data = new GregorianCalendar(ano, mes, dia);

PS.: Os parametros devem ser naquela ordem!

É claro que depende do uso, mas normalmente você vai usar uma variável do tipo java.util.Date, para guardar a data, e caso necessário usar um SimpleDateFormat para formatar as saídas como quiser.

No swing sugiro que utilize o framework JCalendar para criar o componente de entrada da informação:
http://www.toedter.com/en/jcalendar/index.html

Pro cara preencher a data use um JFormattedTextField assim:

private javax.swing.JFormattedTextField txtDataNascimento;

No construtor do formulario:

txtDataNascimento = new JFormattedTextField();
FabricaMascaras.aplicaMascara(txtDataNascimento, FabricaMascaras.getMascaraData());

No focusLost do txtDataNascimento:

    private void txtDataNascimentoFocusLost(java.awt.event.FocusEvent evt) {                                            
        if (txtDataNascimento.getText().length() > 0 && !txtDataNascimento.getText().equals(FabricaMascaras.MASCARA_DATA.replaceAll("#", new Character(FabricaMascaras.PLACEHOLDER).toString()))) {

            String dados[] = txtDataNascimento.getText().split("/");

            boolean dataOK = true;

            for (String string : dados) {
                if (string.contains("_")) {
                    dataOK = false;
                }

            }


            if (dataOK) {

                Calendar cl = Calendar.getInstance();

                int ano = new Integer(dados[2]).intValue();
                int mes = new Integer(dados[1]).intValue();
                int dia = new Integer(dados[0]).intValue();


                if (ano <= 0) {
                    dataOK = false;
                }

                if (mes < 1 || mes > 12) {
                    dataOK = false;
                }

                if (dia < 1 || dia > 31) {
                    dataOK = false;
                }

                if (dataOK) {
                    cl.set(Calendar.YEAR, ano);
                    cl.set(Calendar.MONTH, mes - 1);

                    cl.set(Calendar.DAY_OF_MONTH, 1);

                    if (dia > cl.getActualMaximum(Calendar.DAY_OF_MONTH)) {
                        dataOK = false;
                    }
                }
            }


            if (!dataOK) {
                JOptionPane.showMessageDialog(this, "Data invalida: " + txtDataNascimento.getText(), "Data", JOptionPane.INFORMATION_MESSAGE);
                txtDataNascimento.setText("");
                txtDataNascimento.requestFocus();
            }


        }
    }          

E Na hora de usar a data que esta no txtDataNascimento:

Date dataNascimento = new SimpleDateFormat("dd/MM/yyyy").parse(txtDataNascimento.getText());

Classe FabricaMascaras:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.omegacodigos.ultra.swing;

import java.text.ParseException;
import javax.swing.JFormattedTextField;
import javax.swing.JTextField;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultFormatterFactory;
import javax.swing.text.MaskFormatter;
import javax.swing.text.PlainDocument;

/**
 *
 * @author kemper
 */
public abstract class FabricaMascaras {

    public static String MASCARA_CEP = "##.###-###";
    public static String MASCARA_MAC = "HH:HH:HH:HH:HH:HH";
    public static String MASCARA_DATA = "##/##/####";
    public static String MASCARA_HORASMINUTOS = "##:##";
    public static String MASCARA_TELEFONE = "(##)####-####";
    public static String MASCARA_CNPJ = "##.###.###/####-##";
    public static String MASCARA_CPF = "###.###.###-##";
    public static char PLACEHOLDER = '_';

    public static DefaultFormatterFactory getMascaraCEP() {
        try {
            MaskFormatter defaultMask = new MaskFormatter(MASCARA_CEP);
            defaultMask.setValidCharacters("0123456789");
            defaultMask.setPlaceholderCharacter(PLACEHOLDER);

            DefaultFormatterFactory mascara = new DefaultFormatterFactory(defaultMask, defaultMask, defaultMask, defaultMask);

            return mascara;

        } catch (ParseException ex) {
            return null;
        }
    }

    public static DefaultFormatterFactory getMascaraData() {
        try {
            MaskFormatter mf = new MaskFormatter(MASCARA_DATA);
            mf.setValidCharacters("0123456789");
            mf.setPlaceholderCharacter(PLACEHOLDER);

            DefaultFormatterFactory mascara = new DefaultFormatterFactory(mf, mf);

            return mascara;

        } catch (ParseException ex) {
            return null;
        }
    }

    public static DefaultFormatterFactory getMascaraMAC() {
        try {
            MaskFormatter mf = new MaskFormatter(MASCARA_MAC);
            mf.setValidCharacters("0123456789ABCDEF");
            mf.setPlaceholderCharacter(PLACEHOLDER);

            DefaultFormatterFactory mascara = new DefaultFormatterFactory(mf, mf);

            return mascara;

        } catch (ParseException ex) {
            return null;
        }
    }

    public static DefaultFormatterFactory getMascaraHORAMINUTOS() {
        try {
            MaskFormatter mf = new MaskFormatter(MASCARA_HORASMINUTOS);
            mf.setValidCharacters("0123456789");
            mf.setPlaceholderCharacter(PLACEHOLDER);

            DefaultFormatterFactory mascara = new DefaultFormatterFactory(mf, mf);

            return mascara;

        } catch (ParseException ex) {
            return null;
        }
    }

    public static DefaultFormatterFactory getMascaraTelefone() {
        try {
            MaskFormatter mf = new MaskFormatter(MASCARA_TELEFONE);
            mf.setValidCharacters("0123456789");
            mf.setPlaceholderCharacter(PLACEHOLDER);

            DefaultFormatterFactory mascara = new DefaultFormatterFactory(mf, mf);

            return mascara;

        } catch (ParseException ex) {
            return null;
        }
    }

    public static DefaultFormatterFactory getMascaraCNPJ() {
        try {
            MaskFormatter mf = new MaskFormatter(MASCARA_CNPJ);
            mf.setValidCharacters("0123456789");
            mf.setPlaceholderCharacter(PLACEHOLDER);

            DefaultFormatterFactory mascara = new DefaultFormatterFactory(mf, mf);

            return mascara;

        } catch (ParseException ex) {
            return null;
        }
    }

    public static DefaultFormatterFactory getMascaraCPF() {
        try {
            MaskFormatter mf = new MaskFormatter(MASCARA_CPF);
            mf.setValidCharacters("0123456789");
            mf.setPlaceholderCharacter(PLACEHOLDER);

            DefaultFormatterFactory mascara = new DefaultFormatterFactory(mf, mf);

            return mascara;

        } catch (ParseException ex) {
            return null;
        }
    }

    public static void aplicaMascara(JFormattedTextField controle, DefaultFormatterFactory mascara) {

        controle.setFormatterFactory(mascara);

    }

    public static void SetJTextFieldParaPreencherValorMonetario(JTextField campo) {
        campo.setDocument(new PlainDocument() {

            @Override
            public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
                //normalmente apenas uma letra é inserida por vez,
                //mas fazendo assim também previne caaso o usuário
                //cole algum texto
                StringBuffer toInsert = new StringBuffer();

                for (int i = 0; i < str.length(); i++) {
                    if (Character.isDigit(str.charAt(i))) {
                        toInsert.append(str.charAt(i));
                    } else {

                        if (str.charAt(i) == ',' && getText(0, getLength()).contains(",") == false) {
                            toInsert.append(str.charAt(i));
                        }

                    }
                }

                super.insertString(offs, toInsert.toString(), a);
            }
        });

    }

    public static void SetJTextFieldParaPreencherNome(JTextField campo) {
        campo.setDocument(new PlainDocument() {

            @Override
            public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
                //normalmente apenas uma letra é inserida por vez,
                //mas fazendo assim também previne caaso o usuário
                //cole algum texto
                StringBuffer toInsert = new StringBuffer();

                for (int i = 0; i < str.length(); i++) {
                    if (Character.isLetter(str.charAt(i))) {
                        toInsert.append(str.charAt(i));
                    } else if (str.charAt(i) == ' ' || str.charAt(i) == '-') {
                        toInsert.append(str.charAt(i));
                    }
                }

                super.insertString(offs, toInsert.toString(), a);
            }
        });

    }

    public static void SetJTextFieldParaPreencherEmail(JTextField campo) {
        campo.setDocument(new PlainDocument() {

            @Override
            public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
                //normalmente apenas uma letra é inserida por vez,
                //mas fazendo assim também previne caaso o usuário
                //cole algum texto
                StringBuffer toInsert = new StringBuffer();

                for (int i = 0; i < str.length(); i++) {
                    if (Character.isLetterOrDigit(str.charAt(i))) {
                        toInsert.append(str.charAt(i));
                    } else if (str.charAt(i) == '-' || str.charAt(i) == '+' || str.charAt(i) == '.' || str.charAt(i) == '_') {
                        toInsert.append(str.charAt(i));
                    } else if (str.charAt(i) == '@') {
                        if (getText(0, getLength()).contains("@") == false) {
                            toInsert.append(str.charAt(i));
                        }
                    }
                }

                super.insertString(offs, toInsert.toString(), a);
            }
        });

    }

    public static void SetJTextFieldParaPreencherSite(JTextField campo) {
        campo.setDocument(new PlainDocument() {

            @Override
            public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
                //normalmente apenas uma letra é inserida por vez,
                //mas fazendo assim também previne caaso o usuário
                //cole algum texto
                StringBuffer toInsert = new StringBuffer();

                for (int i = 0; i < str.length(); i++) {
                    if (Character.isLetterOrDigit(str.charAt(i))) {
                        toInsert.append(str.charAt(i));
                    } else if (str.charAt(i) == '-' || str.charAt(i) == '.' || str.charAt(i) == ':' || str.charAt(i) == '/') {
                        toInsert.append(str.charAt(i));
                    }
                }

                super.insertString(offs, toInsert.toString(), a);
            }
        });

    }

    public static void SetJTextFieldParaPreencherApenasNumeros(JTextField campo) {
        campo.setDocument(new PlainDocument() {

            @Override
            public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
                //normalmente apenas uma letra é inserida por vez,
                //mas fazendo assim também previne caaso o usuário
                //cole algum texto
                StringBuffer toInsert = new StringBuffer();

                for (int i = 0; i < str.length(); i++) {
                    if (Character.isDigit(str.charAt(i))) {
                        toInsert.append(str.charAt(i));
                    }
                }

                super.insertString(offs, toInsert.toString(), a);
            }
        });

    }

    public static void SetJTextFieldParaPreencherCPFCNPJ(JTextField campo) {
        campo.setDocument(new PlainDocument() {

            @Override
            public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
                //normalmente apenas uma letra é inserida por vez,
                //mas fazendo assim também previne caaso o usuário
                //cole algum texto
                StringBuffer toInsert = new StringBuffer();

                for (int i = 0; i < str.length(); i++) {
                    if (Character.isDigit(str.charAt(i))) {
                        toInsert.append(str.charAt(i));
                    } else {
                        if (str.charAt(i) == '.' || str.charAt(i) == '/' || str.charAt(i) == '-') {
                            toInsert.append(str.charAt(i));
                        }

                    }

                }

                super.insertString(offs, toInsert.toString(), a);
            }
        });

    }

    public static void SetJTextFieldParaPreencherVelocidadeMikrotik(JTextField campo) {
        campo.setDocument(new PlainDocument() {

            @Override
            public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
                //normalmente apenas uma letra é inserida por vez,
                //mas fazendo assim também previne caaso o usuário
                //cole algum texto
                StringBuffer toInsert = new StringBuffer();

                for (int i = 0; i < str.length(); i++) {
                    if (Character.isDigit(str.charAt(i))) {

                        boolean contemKMG = false;
                        if ((getText(0, getLength()).contains("k")) ||
                                (getText(0, getLength()).contains("m")) ||
                                (getText(0, getLength()).contains("g"))) {
                            contemKMG = true;
                        }

                        if (contemKMG == false || (contemKMG == true && offs < getLength())) {
                            toInsert.append(str.charAt(i));
                        }

                    } else {

                        if (str.charAt(i) == 'k' || str.charAt(i) == 'm' || str.charAt(i) == 'g') {


                            if ( //casos em que esta inserindo uma letra no final
                                    (str.length() == 1 && offs == getLength() && getLength() > 0) ||
                                    (str.length() > 1 && i == (str.length() - 1))) {

                                if (!(getText(0, getLength()).contains("k")) &&
                                        !(getText(0, getLength()).contains("m")) &&
                                        !(getText(0, getLength()).contains("g"))) {
                                    toInsert.append(str.charAt(i));
                                }
                            }
                        }

                    }
                }

                super.insertString(offs, toInsert.toString(), a);
            }
        });
    }
}

Como pode ver ela tem varias outras funcoes uteis, bom proveito!