Você quer aprender como trabalhar com datas no Java? Neste post iremos lhe ensinar as melhores formas de trabalhar com datas no Java para que você possa criar códigos com mais qualidade e desempenho.
O que você irá aprender:
- O que é a classe Date e como usá-la.
- Como pegar a data atual.
- Utilizar as classes DateFormat e SimpleDateFormat para formatar as datas de acordo com sua necessidade.
- O que é a classe GregorianCalendar e como utilizá-la para tratar informações da data.
- Fazer operações com datas, como somar dias por exemplo.
- Saber se um ano é bissexto ou não.
- Trabalhar com datas em outros idiomas.
- Pegar o Unix timestamp atual.
A classe Date
A classe Date é a forma mais básica de se obter datas no Java. Para utilizarmos essa classe, simplesmente precisamos importá-la:
import java.util.Date;
Sua sintaxe é muito simples. Quando criamos um objeto Date, é opcional passarmos no primeiro parâmetro um Unix timestamp. Esse parâmetro define qual data será trabalhada. Se você não informar esse Unix timestamp, a data que será trabalhada será a data atual do sistema. Veja:
No primeiro exemplo, não passamos um valor para o primeiro argumento para trabalharmos com a data atual do sistema. Já no segundo exemplo, informamos um número de formato long que representa uma outra data em segundos (unix timestamp) para trabalharmos com uma data referente.
Formatando datas no Java
Agora que você aprendeu a pegar a data, vamos lhe ensinar a mostrar a data formatada.
Iremos te mostrar duas formas de formatar uma data: Utilizando a classe DateFormat e utilizando a classe SimpleDateFormat.
Utilizando a classe DateFormat
Primeiramente, vamos aprender a trabalhar com a classe DateFormat. Para utilizá-la em seu código, importe a classe desta maneira:
import java.text.DateFormat;
Pronto! Agora você poderá formatar as suas datas como o exemplo abaixo:
Perceba que criamos vários objetos para formatar a data. Cada um de um jeito para lhe mostrar as possibilidades:
- DateFormat.SHORT: Mostra a data no formato dd/mm/yy. Exemplo: 14/03/16.
- DateFormat.MEDIUM: Mostra a data no formato dd/mm/yyyy. Exemplo: 14/03/2016.
- DateFormat.LONG: Mostra a data no formato dd de {mês por extenso} de yyyy. Exemplo: 14 de Março de 2016.
- DateFormat.FULL: Mostra a data no {dia da semana}, dd de {mês por extenso} de yyyy. Exemplo: Segunda, 14 de Março de 2016.
Utilizando a classe SimpleDateFormat
Muitas vezes necessitamos de mais recursos para formatar uma data. Podemos recorrer à classe SimpleDateFormat para isso!
Em vez de passar uma constante como parâmetro do construtor como a classe DateFormat, iremos passar uma string com caracteres que serão substituídos pelas informações da data que iremos trabalhar.
Para importar a classe SimpleDateFormat no seu código, faça desta maneira:
import java.text.SimpleDateFormat;
Utilizaremos na string que passaremos como parâmetro os caracteres da tabela abaixo:
Símbolo | Significado | Apresentação | Exemplo |
---|---|---|---|
G | era designator | (Text) | AD |
y | Ano | (Number) | 1996 |
M | Mês do ano | (Text & Number) | July & 07 |
d | Dia do mês | (Number) | 10 |
h | Hora em AM/PM (1~12) | (Number) | 12 |
H | Hora do dia (0~23) | (Number) | 0 |
m | Minuto da hora | (Number) | 30 |
s | Segundo do minuto | (Number) | 55 |
S | Milissegundo | (Number) | 978 |
E | Dia da semana | (Text) | Tuesday |
D | Dia do ano | (Number) | 189 |
F | Dia da semana no mês | (Number) | 2 (2nd Wed in July) |
w | Semana do ano | (Number) | 27 |
W | Semana no mês | (Number) | 2 |
a | AM / PM | (Text) | PM |
k | Hora do dia (1~24) | (Number) | 24 |
K | Hora em AM/PM (0~11) | (Number) | 0 |
z | Zona de Tempo | (Text) | Pacific Standard Time |
Veja como implementamos a classe para formatar a data:
Utilizando a classe GregorianCalendar para trabalhar com datas
A classe Date é muito boa para pegar datas, mas se você precisa acrescentar 10 dias na data, por exemplo, você poderá utilizar a classe GregorianCalendar.
Para utilizá-la em seu código, basta importá-la:
import java.util.GregorianCalendar;
Veja como você pode pegar as informações de uma determinada data atual:
Obs.: Quando pegamos o mês, é retornado um número referente (0 – 11).
Para mudar a data que você está trabalhando, você pode usar a função set():
Operações com data
Uma tarefa muito comum quando trabalhamos com datas é fazer operações de acréscimo de dias, por exemplo. Podemos fazer essas operações da seguinte maneira:
Na função add(), passamos como primeiro parâmetro o que vai ser mudado (no exemplo será o dia do mês) e como segundo parâmetro o valor que será acrescido.
Ano bissexto
Para saber se um ano é bissexto ou não, podemos usar o método isLeapYear(int ano):
Trabalhando com datas internacionais
Você pode se deparar com a necessidade de mostrar a data por extenso no idioma de vários países. Isso pode ser feito da seguinte maneira:
Usamos a classe Locale para indicar o local que queremos utilizar o idioma.
Unix timestamp no Java
Unix timestamp é o tempo em segundos que se passaram de 1970 até um determinado momento.
Para pegarmos o Unix timestamp atual, podemos fazer isso:
1 thought on “Não perca tempo: Aprenda a trabalhar com datas no Java”
Giovanni Costa
(8 outubro, 2021 - 0:15)Resolveu o meu problema em 10 segundos. obrigado