0

Data e hora no JAVA

Renan Vale
Renan Vale

Criei este artigo com base no módulo 08 do curso de Desenvolvimento Básico em Java. A cada módulo que finalizar irei criar um artigo como este, Sou iniciante e pretendo passar aqui minhas anotações e o que aprendi, espero que gostem.


O java.util.date está na JDK desde sua versão 1.0


Principais Construtores

  • date() - Padrão
  • date(int year, int month, int date)
  • date(int year, int month, int date, int hrs, int min)
  • date(long date, int month, int date, int hrs, int min, int sec)
  • date(string s)


Construtores usados na última versão, as demais foram depreciadas.

  • date()
  • date(long date)


-DATE()

Este construtor vai alocar um objeto da classe date e o inicializará com o milisseunda mais próximo do período da sua execusão.

Exemplo:

import java.util.date;
 public class exemplo01{
  public static void main(string[] args){
	date novaData = new date();
	system.out.println(novaData);
 }
}


-DATE(LONG DATE)

Esse construtor espera que você passe os milissegundos com base padrão de tempo (EPOCH) que usa como preferência 1 de janeiro de 1970 00:00:00.

Exemplo:

import java.util.date;
 public class exemplo02{
  public static void main(string[] args){
	long currentTimeMillis = system.currentTimeMillis();
	system.out.println(curentTimeMillis);
	date novaData = new date(curentTimeMillis);
	system.out.println(novaData);
 }
}


-EPOCH

O epoch timestamp é um padrão largamente aceito para representar uma data como um inteiro 32-bits a partir do início do unis epoch.


-curentTimeMillis()

Esse método estático vai nos retornar o milissegundo mais próximo de sua execução com base no sistema Operacional.


Métodos Úteis

mètodo: after(date)

retorno: boolean

descrição: checa se o objeto data de referência é posterior ao comparado.

**********************

mètodo: before(date)

retorno: boolean

descrição: checa se o objeto data de referência é anterior ao comparado.

**********************

mètodo: compareto(date)

retorno: int

descrição: compara dois objetos data.

**********************

mètodo: equals(date)

retorno: boolean

descrição: checa se os objetos são iguais.

**********************

mètodo: getTime()

retorno: long

descrição: retorna a data em milissegundos.

**********************

mètodo: setTime()

retorno: void

descrição: define uma data com base em milissegundos.

**********************

mètodo: from(instant)

retorno: static date

descrição: define uma data com base em um instant

**********************

mètodo: tolnstant()

retorno: instant

descrição: retorna um instant com base em um date.


-CLASS INSTANT

Surgiu na JDK 1.8;

Imutável e Thead SAFE;

Modela um ponto instantâneo de uma linha do tempo;

Indicado para gravar marcações temporais em eventos da sua aplicação;


-Class java.util.Calendar

Foi criada para facilitar alguns recursos que class date oferecia;

Criada na JDK 1.1;

Depreciando o construtor date(int year, int month, int date);

É uma classe abstrata que provê métodos para converter data entre um instante especifico;

Possui campos específicos para manipulação;

Exemplo:

Calendar agora = Calendar.get(instance();
system.out.println("a data correta é: " + agora.getTime());

agora.add(Calendar.Date, amount: -15);
system.out.println("15 dias atrás: " + agora.getTime());

agora.add(Calendar.Month, amount: 4);
system.out.println("4 meses depois: " + agora.getTime());

agora.add(Calendar.Year, amount: 2);
system.out.println("2 anos depois: " + agora.getTime());


IMPRIMINDO DATAS E HORAS

Calendar agora = Calendar.getInstance();
system.out.printf("%tc\n", agora);
//ter jul 20 12:52:10 BRT 2021
system.out.printf("%tf\n", agora);
//2021-07-20
system.out.printf("%td\n", agora);
//07/20/21
system.out.printf("%tr\n", agora);
//12:52:10 PM
system.out.printf("%tT\n", agora);
//20:58:11


java.text.DateFormat


Existem duas calsses para formatação de de dados

-DateFormat

-SimplesDateFormat: traz uma grande facilidade que é definir um padrão de formatação para a saída de data que você deseja.

 

Exemplos DateFormat:

Date agora = new Date();
String dateToStr = DateFormat.getInstance().Format(agora);
System.out.println(dateToStr);
// 20/07/2021 14:17

DateToStr = DateFormat.getDateTimeInstance(DateFormat.long, DateFormat, Short), Format(agora);
System.out.println(dateToStr);
//20 de Julho de 2019 14:17


Exemplos SimplesDateFormat:

Date agora = new Date();
SimplesDateFormat formatter = new SimplesDateFormat("dd/mm/yyyy");
String dataFormatada = formatter.Format(agora);
System.out.println(dataFormatada);
//20/07/2021


DATAS NO JAVA 8+

-A grande melhoria está no pacote java.time que foi herdado do projeto Joda Time.


Classes Principais

-LocalDate;

-LocalTime;

-LocalDateTime;


LocalDate: 

É uma classe imutável para representar uma data formato padrão yyyy-mm-dd
Exemplo:
LocalDate hoje = LocalDate.now();
System.out.println(hoje);
//2021-07-20

LocalDate ontem = hoje.minusDays(1);
//2021-07-19 menos um dia 


LocalTime:

É uma classe imutável que representa um padrão de hora-minuto-segundo. Pode ser representado até o nível de nanosegundos.

Exemplo:

LocalTime agora = LocalTime.now();
System.out.println(agora);
//14:45:32.1235231521
LocalTime maisUmaHora = agora.plusHours(1);
System.out.println(maisUmaHora);
//15:45:32.1235231521


LocalDataTime:

É uma espécie de junção entre os dois anteriores. Imutável, trabalha diae hora de uma só vez.

Exemplo:

LocalDataTime agora = LocalDataTime.now();
system.out.println(agora);
//2021-07-20T 14:45:32.1235231521

LocalDataTime Futuro = agora.plusHours(1).plusDays(2).plusSeconds(12);
system.out.println(Futuro);
//2021-07-22 15:45:44.1235231521 mandou 1 hora, 2 dias e 12 segundos para frente
0
0

Comentários (1)

0
Aquiles Rodrigues

Aquiles Rodrigues

07/10/2021 09:32

Caro Renan,

Obrigado por compartilhar seu conhecimento.

Gostaria de ajudar em alguns pontos.

Nos exemplos postados percebi alguns detalhes que se copiarem e colarem irá dar erro, principalmente se estiverem usando outra IDE.


Exemplo:

Foi digitado 'system' com primeira letra em minúscula o correto seria

System.out.println

system.out.println

Em outro momento

no agora.add existe a expressão 'amount:' isso geralmente quem exibe é a IDE, mas que para um iniciante ele vai achar que faz parte dos atributos.

agora.add(Calendar.Date, amount: -15);

correto seria:

agora.add(Calendar.Date, -15);


Na linha que trata do exemplo SimpleDateFormat está no plural 'SimplesDateFormat'

SimplesDateFormat


O correto seria:

SimpleDateFormat


Não terminei de ler todo o material ainda.


Mais uma vez, agradeço a disponibilidade de nos ajudar.


Grato,

Aquiles Rodrigues





Começando com desenvolvimento FullStack

Brasil