1. LocalDateTimeclasa

Clasa LocalDateTimecombină capacitățile claselor LocalDateși LocalTime: stochează atât o dată, cât și o oră. Obiectele sale sunt, de asemenea, imuabile, iar metodele sale sunt similare cu cele ale claselor LocalDateși LocalTime.

Obținerea datei și orei curente

Totul este așa cum v-ați aștepta aici: folosim now()metoda. Exemplu:

Cod Ieșire de consolă
LocalDateTime time = LocalDateTime.now();
System.out.println("Now = " + time);

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

Când sunt afișate pe ecran, data și ora sunt separate prin litera T.

Obținerea unei anumite date și oră

Deloc surprinzător, totul este similar cu clasele LocalDateși LocalTime- folosim of()metoda:

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

În primul rând, există parametri care specifică data în aceleași formate ca și în LocalDateclasă. Apoi există parametri care specifică ora în aceleași formate ca și în LocalTimeclasă. O listă cu toate variantele metodei of()este prezentată mai jos:

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

Puteți seta data direct sau indirect prin LocalDateși LocalTimeobiecte:

Cod
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);
Ieșire de consolă
Now = 2019-02-22T10:05:38.465675100
Now = 2019-05-15T12:15

Clasa LocalDateTimeare metode pentru obținerea elementelor unei date și/sau ore. Ele oglindesc exact metodele claselor LocalDateși LocalTime. Nu le vom repeta aici.



2. Instantclasa

De asemenea, creatorii lui Java nu au uitat de metodele vechi de școală.

API-ul Date Time include o clasă Instant pentru lucrul cu timpul destinat proceselor care au loc în computere. În loc de ore, minute și secunde, se ocupă de secunde, milisecunde și nanosecunde.

Această clasă are două câmpuri care reprezintă:

  • numărul de secunde care au trecut de la 1 ianuarie 1970
  • un număr de nanosecunde

Clasa a fost făcută pentru dezvoltatori? Da. De aceea calculează timpul în timp Unix, care începe la începutul anului 1970.

S-ar putea chiar spune că Instantclasa este o versiune simplificată a Dateclasei, reținând doar ceea ce au nevoie programatorii.

Puteți obține un Instantobiect exact în același mod ca un LocalTimeobiect:

Instant timestamp = Instant.now();

Unde timestampeste o Instantvariabilă și este un apel la metoda statică a clasei.Instant.now()now()Instant

Exemplu:

Cod Ieșire de consolă
Instant timestamp = Instant.now();
System.out.println(timestamp);

2019-02-22T08:42:42.234945300Z

De asemenea, puteți crea un obiect nou folosind variații ale of()metodei, trecând timpul scurs de la 1 ianuarie 1970:

ofEpochMilli(long milliseconds)
Trebuie să treceți numărul de milisecunde
ofEpochSecond(long seconds)
Trebuie să treceți numărul de secunde
ofEpochSecond(long seconds, long nanos)
Trebuie să treci secundele și nanosecundele

Metode disponibile pe Instantobiecte

Clasa Instant are două metode care returnează valorile câmpurilor sale:

long getEpochSecond()
Numărul de secunde care au trecut de la 1 ianuarie 1970
int getNano()
Nanosecunde.
long toEpochMilli()
Numărul de milisecunde care au trecut de la 1 ianuarie 1970

Există, de asemenea, metode de a crea un Instantobiect nou bazat pe unul existent:

Instant plusSeconds(long)
Adaugă secunde la ora curentă
Instant plusMillis(long)
Adaugă milisecunde
Instant plusNanos(long)
Adaugă nanosecunde
Instant minusSeconds(long)
Scade secunde
Instant minusMillis(long)
Scade milisecunde
Instant minusNanos(long)
Scade nanosecunde

Exemple:

Cod Ieșire de consolă
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