Instant og Duration
Maskintid og intervaller
Instant og Duration er en gratis Java Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Java Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Java Academy-kurset indeholder 4 lektioner i alt.
Maskintid
Mens LocalDateTime bruges til menneskelige kalendere, repræsenterer Instant et præcist punkt på maskinens tidslinje, målt fra epoken 1970-01-01 i UTC.
Duration repræsenterer et tidsrum mellem to øjeblikke.
Oprettelse af en Instant
Instant.now() registrerer det aktuelle øjeblik. For et forudsigeligt resultat kan vi oprette et øjeblik ud fra et fast antal epokesekunder med ofEpochSecond.
import java.time.Instant;
public class Main {
public static void main(String[] args) {
Instant fixed = Instant.ofEpochSecond(1000000000);
System.out.println(fixed);
}
}Epokesekunder og millisekunder
Du kan læse de underliggende epokeværdier med getEpochSecond og toEpochMilli. De er nyttige til tidsstempler og lagring.
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());
}
}Oprettelse af en Duration
Opret en Duration med fabriksmetoder som ofHours, ofMinutes og 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());
}
}Duration mellem øjeblikke
Duration.between måler tidsforskellen mellem to øjeblikke. Det er standardmetoden til at måle, hvor lang tid noget tog.
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());
}
}Konvertering af Duration-værdier
En Duration kan angive sig selv i forskellige enheder med toMinutes, toHours, toDays og 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());
}
}Tilføjelse til en Instant
Forskyd et øjeblik frem eller tilbage med plus og minus ved at angive en 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());
}
}Hjælpemetoder til plus
Praktiske metoder som plusSeconds og plusMillis gør det muligt at undgå at oprette en Duration ved simple forskydninger.
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());
}
}Sammenligning af øjeblikke
Brug isBefore og isAfter til at placere to øjeblikke i rækkefølge på tidslinjen.
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));
}
}Negative Duration-værdier
Hvis slutningen ligger før begyndelsen, er tidsrummet negativt. isNegative og abs hjælper dig med at håndtere det.
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());
}
}Instant kontra LocalDateTime
Brug Instant til tidsstempler, logning og måling af forløbet tid, fordi det entydigt bruger UTC. Brug LocalDateTime til menneskelige kalenderværdier, hvor tidszonen håndteres et andet sted.
Hurtig kontrol
Kontrollér din forståelse af Instant og Duration.
Opsamling
Du har lært om maskintid:
Instanter et præcist punkt på UTC-tidslinjen fra epoken 1970Durationer en tidsbaseret mængde, der oprettes medofHoursog lignende metoderDuration.betweenmåler forløbet tid- Forskyd øjeblikke med
plusogminus - Brug
Instanttil tidsstempler ogLocalDateTimetil menneskelige datoer
Lær Java med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 104
- Lektioner
- 374
Ofte stillede spørgsmål
Er lektionen “Instant og Duration” gratis?
Ja — hele teksten til “Instant og Duration” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Java Academy-kurset, skal du opgradere til CoddyKit PRO. Java Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Instant og Duration”?
Maskintid og intervaller Du øver dig i Java Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Java Academy?
Der kræves ingen tidligere erfaring. Java Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “Instant og Duration”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Java Academy-lektion?
Ja. Alle Java Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- LocalDate, LocalTime, LocalDateTime
- Instant og Duration
- Period og datoregneregler
- Formatering med DateTimeFormatter