Эссе, новый класс инструмента времени JDK8

задняя часть

jdk8 содержит новые классы инструментов времени, в основном LocalDateTime (время + дата), LocalDate (дата) и LocalTime (время). Давайте посмотрим, как обычно используется новый класс инструментов.

1. Получить текущее время

LocalDateTime.now()
LocalDate.now()
LocalTime.now()

Получить текущее время очень просто, просто вызовите метод now напрямую.Результаты приведенного выше кода следующие:

2019-08-23T16:17:18.439679
2019-08-23
16:17:18.441228

2. Получить другое время часового пояса

1 Получить стандартное время UTC

LocalDateTime.now(ZoneId.of("UTC"))
LocalDate.now(ZoneId.of("UTC"))
LocalTime.now(ZoneId.of("UTC"))

Текущий результат выглядит следующим образом

2019-08-23T08:20:34.065057
2019-08-23
08:20:34.065973

Видно, что это на 8 часов меньше, чем в первом прогоне, потому что пекинское время находится в 8-м округе Востока, поэтому оно будет на 8 часов длиннее стандартного времени UTC.

2 Получить время в других часовых поясах на основе utc

LocalDateTime.now(ZoneId.of("+7"))
LocalDate.now(ZoneId.of("+7"))
LocalTime.now(ZoneId.of("+7"))

Очень просто получить время в других часовых поясах по стандарту utc, восточная зона +, а западная зона -;

3. Форматирование времени и время преобразования строк

1 Время формата

DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now())
DateTimeFormatter.ofPattern("yyyy_MM_dd").format(LocalDate.now())
DateTimeFormatter.ofPattern("HHmmss").format(LocalTime.now())

DateTimeFormatter — это класс инструментов для определения форматов времени. Можно использовать все три класса, но следует отметить, что LocalDate не определяет формат времени, а LocalTime не определяет формат даты, иначе будет сообщено об ошибке.

2 Отформатировать строку по времени

LocalDateTime.parse("20190801000000", DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))

4. Время, необходимое для создания нового

LocalDateTime.of(2018, 8, 13, 23, 56, 2)

В соответствии с годом, месяцем, днем, часом, минутой и секундой вы можете напрямую создать новое время, что очень удобно.

5. Преобразование между временем и отметкой времени

1. Время до отметки времени

LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli()

2. Отметка времени

LocalDateTime.ofInstant(Instant.ofEpochMilli(1566550144837L), ZoneId.systemDefault())

6. Расчет времени

1. Получить атрибуты года, месяца, дня, часа, минуты и секунды определенного времени.

LocalDateTime now = LocalDateTime.now();
now.getYear();
now.getMonth();
now.getDayOfMonth();
now.getDayOfYear();
now.getDayOfWeek();
now.getHour();
now.getMinute();
now.getSecond();

2. Рассчитать увеличение или уменьшение определенной даты

LocalDateTime now = LocalDateTime.now();
//增加一年
now.plusYears(1);
//减少一年
now.minusYears(1);
//增加一月
now.plusMonths(1);
//减少一月
now.minusMonths(1);
.......

3. Рассчитайте разницу между двумя датами

LocalDateTime time1 = LocalDateTime.of(2019, 8, 31, 0, 0);
LocalDateTime time2 = LocalDateTime.of(2019, 7, 31, 0, 0);
System.out.println(time1.until(time2,ChronoUnit.DAYS));

result : -31

Очень удобно вычислять количество дней между двумя датами, то же самое можно сказать и о других значениях.

4. Рассчитайте это место, чтобы оставить маленькую пасхалку

LocalDateTime time2 = LocalDateTime.now().minusDays(1);
LocalDateTime time1 = LocalDateTime.now();
System.out.println(time2.until(time1,ChronoUnit.DAYS));

-----------
LocalDateTime time1 = LocalDateTime.now();
LocalDateTime time2 = LocalDateTime.now().minusDays(1);
System.out.println(time2.until(time1,ChronoUnit.DAYS));

Посмотрите на два рассчитанных результата, и тот, который вам кажется, не совпадает.


Назад к содержанию