1. LocalDateTimeklasse

Klassen LocalDateTimekombinerer mulighederne for klasserne LocalDateog LocalTime: den gemmer både en dato og et klokkeslæt. Dens objekter er også uforanderlige, og dens metoder ligner dem i klasserne LocalDateog LocalTime.

Henter den aktuelle dato og klokkeslæt

Alt er som du forventer her: vi bruger now()metoden. Eksempel:

Kode Konsoludgang
LocalDateTime time = LocalDateTime.now();
System.out.println("Now = " + time);

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

Når den vises på skærmen, er dato og klokkeslæt adskilt af bogstavet T.

Få en bestemt dato og tid

Ikke overraskende ligner alt LocalDateog LocalTimeklasserne - vi bruger of()metoden:

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

For det første er der parametre, der angiver datoen i de samme formater som i LocalDateklassen. Så er der parametre, der angiver tiden i samme formater som i LocalTimeklassen. En liste over alle variationer af of()metoden er givet nedenfor:

Metoder
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)

Du kan indstille datoen direkte eller sætte den indirekte gennem LocalDateog LocalTimeobjekter:

Kode
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);
Konsoludgang
Now = 2019-02-22T10:05:38.465675100
Now = 2019-05-15T12:15

Klassen LocalDateTimehar metoder til at få elementer af en dato og/eller tid. De afspejler nøjagtigt metoderne i LocalDateog LocalTimeklasserne. Vi vil ikke gentage dem her.



2. Instantklasse

Javas skabere har heller ikke glemt old school-måder.

Date Time API inkluderer en Instant-klasse til at arbejde med tid beregnet til processer, der forekommer i computere. I stedet for timer, minutter og sekunder omhandler den sekunder, millisekunder og nanosekunder.

Denne klasse har to felter, der repræsenterer:

  • antallet af sekunder , der er forløbet siden 1. januar 1970
  • et antal nanosekunder

Var klassen lavet til udviklere? Ja. Det er derfor, den beregner tiden i Unix-tid, som starter i begyndelsen af ​​1970.

Man kan endda sige, at Instantklassen er en forenklet version af Dateklassen, der kun bevarer det, programmører har brug for.

Du kan få et Instantobjekt på nøjagtig samme måde som et LocalTimeobjekt:

Instant timestamp = Instant.now();

Hvor timestamper en Instantvariabel, og er et kald til klassens statiske metode .Instant.now()now()Instant

Eksempel:

Kode Konsoludgang
Instant timestamp = Instant.now();
System.out.println(timestamp);

2019-02-22T08:42:42.234945300Z

Du kan også oprette et nyt objekt ved hjælp af variationer af of()metoden ved at indsætte den tid, der er forløbet siden 1. januar 1970:

ofEpochMilli(long milliseconds)
Du skal passere antallet af millisekunder
ofEpochSecond(long seconds)
Du skal passere antallet af sekunder
ofEpochSecond(long seconds, long nanos)
Du skal passere sekunderne og nanosekunderne

Metoder tilgængelige på Instantobjekter

Instant-klassen har to metoder, der returnerer værdierne af dens felter:

long getEpochSecond()
Antal sekunder, der er forløbet siden 1. januar 1970
int getNano()
Nanosekunder.
long toEpochMilli()
Antal millisekunder, der er forløbet siden 1. januar 1970

Der er også metoder til at oprette et nyt Instantobjekt baseret på et eksisterende:

Instant plusSeconds(long)
Tilføjer sekunder til den aktuelle tid
Instant plusMillis(long)
Tilføjer millisekunder
Instant plusNanos(long)
Tilføjer nanosekunder
Instant minusSeconds(long)
Trækker sekunder fra
Instant minusMillis(long)
Trækker millisekunder
Instant minusNanos(long)
Trækker nanosekunder fra

Eksempler:

Kode Konsoludgang
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