1. LocalDateTimeaula

A LocalDateTimeclasse combina os recursos das classes LocalDatee LocalTime: armazena uma data e uma hora. Seus objetos também são imutáveis ​​e seus métodos são semelhantes aos das classes LocalDatee LocalTime.

Obtendo a data e hora atual

Tudo é como você esperaria aqui: nós usamos o now()método. Exemplo:

Código Saída do console
LocalDateTime time = LocalDateTime.now();
System.out.println("Now = " + time);

Now = 2019-02-22T09:49:19.275039200

Quando exibidos na tela, a data e a hora são separadas pela letra T.

Obter uma data e hora específicas

Sem surpresa, tudo é semelhante às classes LocalDatee LocalTime— usamos o of()método:

... = LocalDateTime.of(year, month, day, hours, minutes, seconds);

Primeiro, existem parâmetros que especificam a data nos mesmos formatos da LocalDateclasse. Depois, há parâmetros que especificam a hora nos mesmos formatos da LocalTimeclasse. Uma lista de todas as variações do of()método é dada abaixo:

Métodos
of (int year, int month, int day, int hour, int minute)
of (int year, int month, int day, int hour, int minute, int second)
of (int year, int month, int day, int hour, int minute, int second, int nano)
of (int year, Month month, int day, int hour, int minute)
of (int year, Month month, int day, int hour, int minute, int second)
of (int year, Month month, int day, int hour, int minute, int second, int nano)
of (LocalDate date, LocalTime time)

Você pode definir a data diretamente ou indiretamente por meio de LocalDatee LocalTimeobjetos:

Código
LocalDate date = LocalDate.now();
LocalTime time = LocalTime.now();
LocalDateTime current = LocalDateTime.of(date, time);
System.out.println("Now = " + current);

LocalDateTime date = LocalDateTime.of(2019, Month.MAY, 15, 12, 15, 00);
System.out.println("Now = " + date);
Saída do console
Now = 2019-02-22T10:05:38.465675100
Now = 2019-05-15T12:15

A LocalDateTimeclasse possui métodos para obter elementos de uma data e/ou hora. Eles espelham exatamente os métodos das classes LocalDatee LocalTime. Não os repetiremos aqui.



2. Instantclasse

Os criadores de Java também não se esqueceram dos métodos antigos.

A API Date Time inclui uma classe Instant para trabalhar com tempo destinado a processos que ocorrem em computadores. Em vez de horas, minutos e segundos, ele lida com segundos, milissegundos e nanossegundos.

Esta classe possui dois campos que representam:

  • o número de segundos decorridos desde 1º de janeiro de 1970
  • um número de nanossegundos

A aula foi feita para desenvolvedores? Sim. É por isso que ele calcula o tempo no Unix-time, que começa no início de 1970.

Pode-se até dizer que a Instantclasse é uma versão simplificada da Dateclasse, retendo apenas o que os programadores precisam.

Você pode obter um Instantobjeto exatamente da mesma maneira que um LocalTimeobjeto:

Instant timestamp = Instant.now();

Onde timestampé uma Instantvariável e é uma chamada para o método estático da classe.Instant.now()now()Instant

Exemplo:

Código Saída do console
Instant timestamp = Instant.now();
System.out.println(timestamp);

2019-02-22T08:42:42.234945300Z

Você também pode criar um novo objeto usando variações do of()método passando o tempo decorrido desde 1º de janeiro de 1970:

ofEpochMilli(long milliseconds)
Você precisa passar o número de milissegundos
ofEpochSecond(long seconds)
Você precisa passar o número de segundos
ofEpochSecond(long seconds, long nanos)
Você precisa passar os segundos e nanossegundos

Métodos disponíveis em Instantobjetos

A classe Instant possui dois métodos que retornam os valores de seus campos:

long getEpochSecond()
Número de segundos decorridos desde 1º de janeiro de 1970
int getNano()
Nanossegundos.
long toEpochMilli()
Número de milissegundos decorridos desde 1º de janeiro de 1970

Também existem métodos para criar novos Instantobjetos com base em um existente:

Instant plusSeconds(long)
Adiciona segundos à hora atual
Instant plusMillis(long)
Adiciona milissegundos
Instant plusNanos(long)
Adiciona nanossegundos
Instant minusSeconds(long)
Subtrai segundos
Instant minusMillis(long)
Subtrai milissegundos
Instant minusNanos(long)
Subtrai nanossegundos

Exemplos:

Código Saída do console
Instant timestamp = Instant.now();
System.out.println(timestamp);

long n = timestamp.toEpochMilli();
Instant time = Instant.ofEpochMilli(n);
System.out.println(time);

2019-02-22T09:01:20.535344Z



2019-02-22T09:01:20.535Z