Java Academy · Lektion

Instant og Duration

Maskintid og intervaller

Lektion 2 af 413 trin

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 kalender­væ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:

  • Instant er et præcist punkt på UTC-tidslinjen fra epoken 1970
  • Duration er en tidsbaseret mængde, der oprettes med ofHours og lignende metoder
  • Duration.between måler forløbet tid
  • Forskyd øjeblikke med plus og minus
  • Brug Instant til tidsstempler og LocalDateTime til menneskelige datoer
Gratis at komme i gang

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

  1. LocalDate, LocalTime, LocalDateTime
  2. Instant og Duration
  3. Period og datoregneregler
  4. Formatering med DateTimeFormatter
← Tilbage til Java Academy