1. LocalDateTimeklasse

Klassen LocalDateTimekombinerer egenskapene til klassene LocalDateog LocalTime: den lagrer både en dato og et klokkeslett. Objektene er også uforanderlige, og metodene ligner på klassene LocalDateog LocalTime.

Henter gjeldende dato og klokkeslett

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

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

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

Når den vises på skjermen, er dato og klokkeslett atskilt med bokstaven T.

Får en bestemt dato og klokkeslett

Ikke overraskende er alt likt og LocalDateklassene LocalTime- vi bruker of()metoden:

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

For det første er det parametere som spesifiserer datoen i samme formater som i klassen LocalDate. Så er det parametere som spesifiserer tiden i samme formater som i klassen LocalTime. En liste over alle varianter av of()metoden er gitt 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 sette datoen direkte eller sette den indirekte gjennom 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);
Konsollutgang
Now = 2019-02-22T10:05:38.465675100
Now = 2019-05-15T12:15

Klassen LocalDateTimehar metoder for å få elementer av en dato og/eller tid. De speiler nøyaktig metodene til LocalDateog LocalTimeklassene. Vi vil ikke gjenta dem her.



2. Instantklasse

Javas skapere har heller ikke glemt gamle skolemåter.

Date Time API inkluderer en Instant-klasse for arbeid med tid beregnet på prosesser som skjer på datamaskiner. I stedet for timer, minutter og sekunder, omhandler den sekunder, millisekunder og nanosekunder.

Denne klassen har to felt som representerer:

  • antall sekunder som har gått siden 1. januar 1970
  • et antall nanosekunder

Var klassen laget for utviklere? Ja. Det er derfor den beregner tid i Unix-tid, som starter i begynnelsen av 1970.

Man kan til og med si at Instantklassen er en forenklet versjon av Dateklassen, som bare beholder det programmerere trenger.

Du kan få et Instantobjekt på nøyaktig samme måte som et LocalTimeobjekt:

Instant timestamp = Instant.now();

Hvor timestamper en Instantvariabel, og er et kall til den statiske metoden til klassen.Instant.now()now()Instant

Eksempel:

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

2019-02-22T08:42:42.234945300Z

Du kan også opprette et nytt objekt ved å bruke varianter av of()metoden ved å sende inn tiden som har gått siden 1. januar 1970:

ofEpochMilli(long milliseconds)
Du må passere antall millisekunder
ofEpochSecond(long seconds)
Du må passere antall sekunder
ofEpochSecond(long seconds, long nanos)
Du må passere sekunder og nanosekunder

Metoder tilgjengelig på Instantobjekter

Instant-klassen har to metoder som returnerer verdiene til feltene:

long getEpochSecond()
Antall sekunder som har gått siden 1. januar 1970
int getNano()
Nanosekunder.
long toEpochMilli()
Antall millisekunder som har gått siden 1. januar 1970

Det finnes også metoder for å lage et nytt Instantobjekt basert på et eksisterende:

Instant plusSeconds(long)
Legger til sekunder til gjeldende tid
Instant plusMillis(long)
Legger til millisekunder
Instant plusNanos(long)
Legger til nanosekunder
Instant minusSeconds(long)
Trekker fra sekunder
Instant minusMillis(long)
Trekker fra millisekunder
Instant minusNanos(long)
Trekker fra nanosekunder

Eksempler:

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