1. LocalDateTimeклас

Класът LocalDateTimeсъчетава възможностите на класовете LocalDateи LocalTime: съхранява Howто дата, така и час. Неговите обекти също са неизменни, а методите му са подобни на тези на класовете LocalDateи LocalTime.

Получаване на текущата дата и час

Тук всичко е Howто бихте очаквали: ние използваме now()метода. Пример:

Код Конзолен изход
LocalDateTime time = LocalDateTime.now();
System.out.println("Now = " + time);

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

Когато се показват на екрана, датата и часът са разделени с буквата T.

Получаване на конкретна дата и час

Не е изненадващо, че всичко е подобно на класовете LocalDateи LocalTime— използваме of()метода:

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

Първо, има параметри, които указват датата в същите формати като в LocalDateкласа. След това има параметри, които определят времето в същите формати като в LocalTimeкласа. of()По-долу е даден списък на всички варианти на метода:

Методи
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)

Можете да зададете датата директно or индиректно чрез LocalDateи LocalTimeобекти:

Код
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);
Конзолен изход
Now = 2019-02-22T10:05:38.465675100
Now = 2019-05-15T12:15

Класът LocalDateTimeима методи за получаване на елементи от дата и/or час. Те точно отразяват методите на класовете LocalDateи LocalTime. Тук няма да ги повтаряме.



2. Instantклас

Създателите на Java също не са забравor старите методи.

API за дата и час включва Instant клас за работа с време, предназначено за процеси, които се случват в компютрите. Вместо часове, minutesи и секунди, той работи със секунди, мorсекунди и наносекунди.

Този клас има две полета, които представляват:

  • броя секунди , изминали от 1 януари 1970 г
  • няколко наносекунди

Класът за разработчици ли беше? да Ето защо изчислява времето в Unix-времето, което започва в началото на 1970 г.

Може дори да се каже, че Instantкласът е опростена version на Dateкласа, запазвайки само това, от което програмистите се нуждаят.

Можете да получите Instantобект по абсолютно същия начин като LocalTimeобект:

Instant timestamp = Instant.now();

Където timestampе Instantпроменлива и е извикване на статичния метод на класа.Instant.now()now()Instant

Пример:

Код Конзолен изход
Instant timestamp = Instant.now();
System.out.println(timestamp);

2019-02-22T08:42:42.234945300Z

Можете също така да създадете нов обект, като използвате варианти на of()метода, като прехвърлите времето, изминало от 1 януари 1970 г.:

ofEpochMilli(long milliseconds)
Трябва да преминете броя мorсекунди
ofEpochSecond(long seconds)
Трябва да преминете броя секунди
ofEpochSecond(long seconds, long nanos)
Трябва да преминете секундите и наносекунди

Налични методи за Instantобекти

Класът Instant има два метода, които връщат стойностите на неговите полета:

long getEpochSecond()
Броят секунди, изминали от 1 януари 1970 г
int getNano()
Наносекунди.
long toEpochMilli()
Брой мorсекунди, изминали от 1 януари 1970 г

Има и методи за създаване на нови Instantобекти на базата на съществуващ:

Instant plusSeconds(long)
Добавя секунди към текущото време
Instant plusMillis(long)
Добавя мorсекунди
Instant plusNanos(long)
Добавя наносекунди
Instant minusSeconds(long)
Изважда секунди
Instant minusMillis(long)
Изважда мorсекунди
Instant minusNanos(long)
Изважда наносекунди

Примери:

Код Конзолен изход
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