1. LocalDateTimeklass

Klassen LocalDateTimekombinerar funktionerna i klasserna LocalDateoch LocalTime: den lagrar både ett datum och en tid. Dess objekt är också oföränderliga, och dess metoder liknar dem för klasserna LocalDateoch .LocalTime

Hämta aktuellt datum och tid

Allt är som du förväntar dig här: vi använder now()metoden. Exempel:

Koda Konsolutgång
LocalDateTime time = LocalDateTime.now();
System.out.println("Now = " + time);

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

När de visas på skärmen separeras datum och tid med bokstaven T.

Få ett specifikt datum och tid

Föga förvånande, allt liknar klasserna LocalDateoch LocalTime- vi använder of()metoden:

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

För det första finns det parametrar som anger datumet i samma format som i klassen LocalDate. Sedan finns det parametrar som anger tiden i samma format som i klassen LocalTime. En lista över alla varianter av of()metoden ges nedan:

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 ställa in datumet direkt eller ställa in det indirekt genom LocalDateoch LocalTimeobjekt:

Koda
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);
Konsolutgång
Now = 2019-02-22T10:05:38.465675100
Now = 2019-05-15T12:15

Klassen LocalDateTimehar metoder för att få element av ett datum och/eller tid. De speglar exakt metoderna för klasserna LocalDateoch . LocalTimeVi kommer inte att upprepa dem här.



2. Instantklass

Javas skapare har heller inte glömt gamla skolans sätt.

Date Time API innehåller en Instant-klass för att arbeta med tid avsedd för processer som sker i datorer. Istället för timmar, minuter och sekunder, handlar det om sekunder, millisekunder och nanosekunder.

Den här klassen har två fält som representerar:

  • antalet sekunder som har förflutit sedan 1 januari 1970
  • ett antal nanosekunder

Var klassen gjord för utvecklare? Ja. Det är därför den beräknar tiden i Unix-tid, som börjar i början av 1970.

Man kan till och med säga att Instantklassen är en förenklad version av Dateklassen, som bara behåller det som programmerare behöver.

Du kan få ett Instantobjekt på exakt samma sätt som ett LocalTimeobjekt:

Instant timestamp = Instant.now();

Where timestampär en Instantvariabel och är ett anrop till klassens statiska metod .Instant.now()now()Instant

Exempel:

Koda Konsolutgång
Instant timestamp = Instant.now();
System.out.println(timestamp);

2019-02-22T08:42:42.234945300Z

Du kan också skapa ett nytt objekt med hjälp av varianter av of()metoden genom att skicka in den tid som förflutit sedan 1 januari 1970:

ofEpochMilli(long milliseconds)
Du måste passera antalet millisekunder
ofEpochSecond(long seconds)
Du måste passera antalet sekunder
ofEpochSecond(long seconds, long nanos)
Du måste passera sekunderna och nanosekunderna

Metoder tillgängliga på Instantobjekt

Klassen Instant har två metoder som returnerar värdena för dess fält:

long getEpochSecond()
Antal sekunder som har förflutit sedan 1 januari 1970
int getNano()
Nanosekunder.
long toEpochMilli()
Antal millisekunder som har förflutit sedan 1 januari 1970

Det finns också metoder för att skapa ett nytt Instantobjekt baserat på ett befintligt:

Instant plusSeconds(long)
Lägger till sekunder till den aktuella tiden
Instant plusMillis(long)
Lägger till millisekunder
Instant plusNanos(long)
Lägger till nanosekunder
Instant minusSeconds(long)
Subtraherar sekunder
Instant minusMillis(long)
Subtraherar millisekunder
Instant minusNanos(long)
Subtraherar nanosekunder

Exempel:

Koda Konsolutgång
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