Instant e Duration
Tempo da máquina e intervalos
Instant e Duration é uma aula grátis de Java Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Java Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Java Academy inclui 4 aulas no total.
Tempo da máquina
Enquanto LocalDateTime é usado para calendários humanos, Instant representa um ponto preciso na linha do tempo da máquina, medido a partir da época de 1970-01-01 em UTC.
Duration representa uma quantidade de tempo entre dois instantes.
Criando um instante
Instant.now() captura o momento atual. Para obter uma saída previsível, podemos criar um a partir de um segundo de época fixo com ofEpochSecond.
import java.time.Instant;
public class Main {
public static void main(String[] args) {
Instant fixed = Instant.ofEpochSecond(1000000000);
System.out.println(fixed);
}
}Segundos e milissegundos da época
Você pode ler os valores de época subjacentes com getEpochSecond e toEpochMilli. Eles são úteis para marcas de data e hora e para armazenamento.
import java.time.Instant;
public class Main {
public static void main(String[] args) {
Instant t = Instant.ofEpochSecond(1500000000);
System.out.println(t.getEpochSecond());
System.out.println(t.toEpochMilli());
}
}Criando uma duração
Crie uma Duration usando métodos de fábrica como ofHours, ofMinutes e ofSeconds.
import java.time.Duration;
public class Main {
public static void main(String[] args) {
Duration d = Duration.ofMinutes(90);
System.out.println(d);
System.out.println(d.toHours());
}
}Duração entre instantes
Duration.between mede o intervalo entre dois instantes. Essa é a forma padrão de medir por quanto tempo algo demorou.
import java.time.Duration;
import java.time.Instant;
public class Main {
public static void main(String[] args) {
Instant start = Instant.ofEpochSecond(1000);
Instant end = Instant.ofEpochSecond(1075);
Duration elapsed = Duration.between(start, end);
System.out.println(elapsed.getSeconds());
}
}Convertendo durações
Uma Duration pode informar seu valor em diferentes unidades com toMinutes, toHours, toDays e toMillis.
import java.time.Duration;
public class Main {
public static void main(String[] args) {
Duration d = Duration.ofSeconds(7320);
System.out.println(d.toMinutes());
System.out.println(d.toHours());
}
}Adicionando a um instante
Avance ou retroceda um instante com plus e minus, passando uma Duration.
import java.time.Duration;
import java.time.Instant;
public class Main {
public static void main(String[] args) {
Instant now = Instant.ofEpochSecond(1000);
Instant later = now.plus(Duration.ofHours(2));
System.out.println(later.getEpochSecond());
}
}Métodos auxiliares de plus
Métodos convenientes, como plusSeconds e plusMillis, permitem dispensar a criação de uma duração para deslocamentos simples.
import java.time.Instant;
public class Main {
public static void main(String[] args) {
Instant t = Instant.ofEpochSecond(0);
System.out.println(t.plusSeconds(3600).getEpochSecond());
}
}Comparando instantes
Use isBefore e isAfter para ordenar dois instantes na linha do tempo.
import java.time.Instant;
public class Main {
public static void main(String[] args) {
Instant a = Instant.ofEpochSecond(100);
Instant b = Instant.ofEpochSecond(200);
System.out.println(a.isBefore(b));
}
}Durações negativas
Se o fim for anterior ao início, a duração será negativa. isNegative e abs ajudam a lidar com essa situação.
import java.time.Duration;
import java.time.Instant;
public class Main {
public static void main(String[] args) {
Duration d = Duration.between(Instant.ofEpochSecond(200), Instant.ofEpochSecond(100));
System.out.println(d.isNegative());
System.out.println(d.abs().getSeconds());
}
}Instante versus LocalDateTime
Use Instant para marcas de data e hora, registros e medição do tempo decorrido, pois ele representa o UTC sem ambiguidades. Use LocalDateTime para valores de calendário humano quando o fuso horário for tratado em outro lugar.
Verificação rápida
Teste sua compreensão de instante e duração.
Revisão
Você aprendeu sobre o tempo da máquina:
Instanté um ponto preciso na linha do tempo UTC a partir da época de 1970Durationé uma quantidade baseada em tempo, criada comofHourse métodos semelhantesDuration.betweenmede o tempo decorrido- Desloque instantes com
pluseminus - Use
Instantpara marcas de data e hora eLocalDateTimepara datas humanas
Perguntas Frequentes
A aula “Instant e Duration” é grátis?
Sim — o texto completo de “Instant e Duration” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Java Academy, atualize para CoddyKit PRO. O curso de Java Academy inclui 4 aulas no total.
O que vou aprender em “Instant e Duration”?
Tempo da máquina e intervalos Você pratica Java Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Java Academy?
Nenhuma experiência prévia é necessária. Java Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Instant e Duration”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Java Academy?
Sim. Cada aula de Java Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- LocalDate, LocalTime, LocalDateTime
- Instant e Duration
- Period e Aritmética de Datas
- Formatação com DateTimeFormatter