2
respostas

Como Atribuir uma Data ao Criar Um Objeto.

Fala galera estou com uma seguinte dúvida em tenho uma classe funcionário que usei para fazer um teste, no entanto eu usava String para passar data e gostaria de melhorar esse meu código, no entanto não sei como atribuir ou se posso deixar como string e converter para data, segue a baixo minhas classes que estou usando para teste.

Classe Funcionário

ipackage br.com.minhasatividades.classe;

public class Funcionario {

    private String nome;
    private String dataDeNascimento;

    public Funcionario(String nome, String dataDeNascimento) {
        this.nome = nome;
        this.dataDeNascimento = dataDeNascimento;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getDataDeNascimento() {
        return dataDeNascimento;
    }

    public void setDataDeNascimento(String dataDeNascimento) {
        this.dataDeNascimento = dataDeNascimento;
    }

    @Override
    public String toString() {
        return "Funcionario{" +
                "nome='" + nome + '\'' +
                ", dataDeNascimento='" + dataDeNascimento + '\'' +
                '}';
    }
}

Classe testa Funcionário

package br.com.minhasatividades.main;

import br.com.minhasatividades.classe.Funcionario;

import java.util.ArrayList;
import java.util.List;

public class FuncionarioTeste {

    public static void main(String[] args) {

        List <Funcionario> funcionarios = new  ArrayList();

        funcionarios.add(new Funcionario("Wellington de Carvalho Barbosa", "25/04/1985"));

        for (int i = 0; i < funcionarios.size(); i++) {
            System.out.println(funcionarios.get(i));
        }


        }
    }

2 respostas

Olá Wellington, tudo bem com você?

As classes mais comuns para se armazenar datas e horas são LocalDate (data sem horário), LocalTime (horário sem data) e LocalDateTime (horário e data). Como estamos lidando com uma data de nascimento, podemos usar o LocalDate dessa forma:

Obs.: LocalDate representa a data no formato ISO (yyyy-MM-dd).

public class Funcionario {

    private String nome;

    // mudando tipo da 'dataDeNascimento' de String para LocalDate
    private LocalDate dataDeNascimento;

    // classe responsável por formatar um padrão diferente do formato ISO
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");

    // recebendo 'dataDeNascimento' no formato de String no construtor
    public Funcionario(String nome, String dataDeNascimento) {
        this.nome = nome;

        // convertendo data do tipo String ("dd/MM/yyyy") para LocalDate (yyyy-MM-dd)
        this.dataDeNascimento = LocalDate.parse(dataDeNascimento, formatter);
    }

    // código omitido

    // convertendo data do tipo LocalDate (yyyy-MM-dd) para String (dd/MM/yyyy)
    public String getDataDeNascimento() {
        return formatter.format(dataDeNascimento);
    }

    // para settar a data, podemos continuar mandando Strings
    public void setDataDeNascimento(String dataDeNascimento) {
        this.dataDeNascimento = dataDeNascimento;
    }

    // código omitido
}

Espero que isso ajude, você pode encontrar mais exemplos nesse site (em inglês).

Forte abraço e bons estudos!!

Boa Thiago!