Java Alterar formato de data

Rashmi Patidar 12 outubro 2023
Java Alterar formato de data

Existem várias opções disponíveis para converter uma string de data em formato de data. Abaixo estão mencionadas maneiras pelas quais pode trazer os resultados desejados. Vamos entender a variedade de maneiras do bloco de código abaixo.

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class StringToDateFormat {
  public static void main(String[] args) throws ParseException {
    System.out.print("Way1: ");
    SimpleDateFormat dt = new SimpleDateFormat("yyyyy-MM-dd");
    System.out.print(dt.parse("2021-11-05") + "\n");

    System.out.print("Way2: ");
    SimpleDateFormat formatter = new SimpleDateFormat("dd/MMM/yyyy HH:mm:ss", Locale.ENGLISH);
    System.out.print(formatter.parse("21/JAN/2021 21:35:56") + "\n");

    System.out.print("Way3: ");
    DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("EEE, d MMM yyyy", Locale.ENGLISH);
    System.out.print(LocalDate.parse("Wed, 5 May 2021", formatter1) + "\n");

    System.out.print("Way4: ");
    System.out.print(LocalDate.parse("2021-05-31") + "\n");
  }
}

Em Way1, uma instância da classe SimpleDateFormat é criada. Recebe um valor pattern do formato em que a string de data é inserida. Portanto, desta forma, inserimos uma data no formato yyyy-MM-dd. A instanciação também lança algumas exceções como NullPointerException e IllegalArgumentException se o parâmetro for nulo ou ilegal. Agora, com o objeto formatter criado recentemente, inicializamos um método parse. O método usa a string de data como um valor de entrada e retorna o tipo de dados Date após a análise. Ele lança ParseException quando a string de data e o formatador fornecidos não correspondem ou, internamente, a string de data não é analisada.

Em Way2, novamente a classe SimpleDateFormat é usada para criar um formato que deve entrar. Mas agora, um construtor sobrescrito de SimpleDateFormat é chamado. O primeiro parâmetro é o format/pattern da string Date. Outra é Locale que define uma região ou área geográfica especificada. Note: Todos os locais não são permitidos no método. Agora, verifique o padrão dd/MMM/yyyy HH:mm: ss que tinha um mês no formato mmm. O formato indica que a abreviação dos meses é aceitável no formato mmm. Além disso, pode levar horas, minutos e segundos na string de formato.

Em Way3, o uso da classe DateTimeFormat é feito para formatar e imprimir objetos de data-hora. O método ofPattern é usado para preparar um formatador do padrão desejado. Agora o método estático da classe LocalDate é chamado para analisar a data. O método é parse que leva o texto para analisar e DateTimeFormatter para especificar o formato do texto da data de entrada. O método retorna a instância LocalDate e não é nulo. Ele lança DateTimeParseException quando o texto não pode ser analisado. O formato também pode levar o nome do dia. A abreviatura EEE denota o mesmo no formatador.

Em Way4, diretamente o método parse que é um método de fábrica estático da classe LocalDate é chamado. Desta vez, nenhuma instância do formatador ou padrão é definido de forma alguma. Agora a função recebe a string de data de entrada no formato yyyy-MM-dd. A string de data especificada sempre deve representar uma data válida e é convertida usando o formato DateTimeFormatter.ISO_LOCAL_DATE. O método lança a exceção DateTimeParseException quando o texto não pode ser analisado.

Abaixo está a saída do código para converter a string de data no formato Date.

Way1: Fri Nov 05 00:00:00 IST 2021
Way2: Thu Jan 21 21:35:56 IST 2021
Way3: 2021-05-05
Way4: 2021-05-31
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn