20 примеров использования новой библиотеки времени и даты Java 8

Java

Как Java 8 обрабатывает время и дату

Кто-то спросил меня, как лучше всего изучить новую библиотеку? Мой ответ - использовать его таким образом в реальных проектах. В реальном проекте будут различные требования, которые заставят разработчиков исследовать и изучать эту новую библиотеку. Короче говоря, только сама задача будет действительно мотивировать вас исследовать и учиться. То же самое верно для нового API даты и времени Java 8. Чтобы узнать об этой новой библиотеке для Java 8, здесь я создал 20 ориентированных на задачи примеров. Давайте начнем с простой задачи, например, как использовать библиотеку времени и даты Java 8 для представления сегодняшнего дня, а затем перейдем к созданию полной даты со временем и часовым поясом, а затем изучим, как выполнить некоторые более практические задачи, такие как Разработайте приложение-напоминание, чтобы узнать, сколько дней осталось до определенной даты, такой как день рождения, годовщина воскресенья, следующий платежный день, следующий премиум-день или срок действия кредитной карты.

Пример 1. Как получить сегодняшнюю дату в Java 8

В Java 8 есть класс LocalDate, который можно использовать для представления сегодняшней даты. Этот класс немного отличается от java.util.Date тем, что содержит только дату, а не время. Поэтому, если вам просто нужно представить дату без времени, вы можете использовать его.

LocalDate today = LocalDate.now(); 
System.out.println("Today's Local date : " + today); 

输出
Today's Local date : 2018-02-11

Вы можете видеть, что он создает сегодняшнюю дату без информации о времени. Он также форматирует дату, а затем выводит ее.В отличие от предыдущего класса Date, печатаемые данные не форматируются.

Пример 2. Как получить день месяца текущего года в Java 8

Класс LocalDate предоставляет несколько удобных методов, которые можно использовать для извлечения года, месяца, дня и других атрибутов даты. Используя эти методы, вы можете получить любое свойство даты, которое вам нужно, без использования класса, такого как java.util.Calendar:

LocalDate today = LocalDate.now(); 
int year = today.getYear(); 
int month = today.getMonthValue(); 
int day = today.getDayOfMonth(); 
System.out.printf("Year : %d Month : %d day : %d \t %n", year, month, day); 

输出 
Today's Local date : 2018-02-11 
Year : 2018 Month : 2 day : 11

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

Пример 3. Как получить конкретную дату в Java 8

В первом примере мы видели, что очень просто сгенерировать сегодняшнюю дату с помощью статического метода now(), но с помощью другого очень полезного фабричного метода LocalDate.of() можно создать любую дату, которая принимает год, Возвращаются параметры месяца и дня, а также возвращается эквивалентный экземпляр LocalDate. Хорошая новость об этом методе заключается в том, что он не повторяет ошибок предыдущего API, например, год может начинаться только с 1900, месяц должен начинаться с 0 и т. д. Дата здесь то, что вы пишете. Например, в следующем примере это 14 января, и нет никакой скрытой логики.

LocalDate dateOfBirth = LocalDate.of(2010, 01, 14); 
System.out.println("Your Date of birth is : " + dateOfBirth); 

输出 : Your Date of birth is : 2010-01-14

Видно, что создана дата, которую мы написали, 14 января 2014 года.

Пример 4. Как проверить, равны ли две даты в Java 8

Когда дело доходит до фактической задачи обработки времени и даты в действительности, обычная задача — проверить, равны ли две даты. Вы можете часто сталкиваться с необходимостью определить, является ли сегодня особый день, например, день рождения, годовщина или праздник. Иногда вам будет указана дата, чтобы проверить, является ли это днем, например, праздником. Следующий пример поможет вам выполнить такую ​​задачу в Java 8. Как и следовало ожидать, LocalDate переопределяет метод equals для сравнения дат следующим образом:

LocalDate date1 = LocalDate.of(2014, 01, 14); 
if(date1.equals(today)){ 
    System.out.printf("Today %s and date1 %s are same date %n", today, date1); 
} 

输出 
today 2014-01-14 and date1 2014-01-14 are same date

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

Пример 5. Как проверить повторяющиеся события, такие как день рождения, в Java 8

Другой практической задачей, связанной со временем и датой в Java, является проверка повторяющихся событий, таких как дата ежемесячного выставления счета, годовщина свадьбы, дата ежемесячного погашения или дата ежегодного страхового взноса. Если вы работаете в компании, занимающейся электронной коммерцией, обязательно должен быть такой модуль, который будет отправлять пользователям поздравления с днем ​​рождения и отправлять им поздравления с каждым важным праздником, таким как Рождество, День Благодарения, в Индии, может быть, это Дипавали. Как узнать, праздник это или повторяющееся событие в Java? Используйте класс MonthDay. Этот класс состоит из месяца и дня и не содержит информации о годе, что означает, что вы можете использовать его для представления некоторых дней, которые повторяются каждый год. Конечно, есть и другие комбинации, например класс YearMonth. Он является неизменяемым и потокобезопасным, как и другие классы в новой библиотеке даты и времени, а также является классом значений. Давайте используем пример, чтобы увидеть, как использовать MonthDay для проверки повторяющейся даты:

LocalDate dateOfBirth = LocalDate.of(2010, 01, 14); 
MonthDay birthday = MonthDay.of(dateOfBirth.getMonth(), dateOfBirth.getDayOfMonth()); 
MonthDay currentMonthDay = MonthDay.from(today); 
if(currentMonthDay.equals(birthday)){ 
    System.out.println("Many Many happy returns of the day !!"); 
}else{ 
    System.out.println("Sorry, today is not your birthday"); 
} 

输出: Many Many happy returns of the day !!

Хотя год другой, сегодня день рождения, поэтому в выводе вы увидите поздравление с днем ​​рождения. Вы можете настроить системное время и запустить программу, чтобы увидеть, напоминает ли она вам, когда ваш следующий день рождения.Вы также можете попробовать написать модульный тест JUnit со своим следующим днем ​​​​рождения, чтобы увидеть, правильно ли работает код.

Пример 6. Как получить текущее время в Java 8

Это очень похоже на получение текущей даты в первом примере. На этот раз мы используем класс LocalTime, который представляет собой время без даты и является близким родственником LocalDate. Здесь вы также можете использовать статический фабричный метод now() для получения текущего времени. Формат по умолчанию — чч:мм:сс:ннн, где ннн — наносекунды. Это можно сравнить с тем, как получить текущее время до Java 8.

LocalTime time = LocalTime.now(); 
System.out.println("local time now : " + time);

输出 
local time now : 16:33:33.369 // in hour, minutes, seconds, nano seconds

Как видите, текущее время не содержит даты, потому что в LocalTime есть только время, а не дата.

Пример 7. Как увеличить количество часов во времени

Много раз нам нужно добавить часы, минуты или секунды, чтобы рассчитать будущее время. Java 8 не только предоставляет неизменяемые и потокобезопасные классы, но также предоставляет несколько более удобных методов, таких как plusHours(), для замены исходного метода add(). Кстати, эти методы возвращают ссылку на новый экземпляр LocalTime, поскольку LocalTime неизменяем, не забудьте сохранить эту новую ссылку.

LocalTime time = LocalTime.now(); 
LocalTime newTime = time.plusHours(2); // adding two hours 
System.out.println("Time after 2 hours : " + newTime); 

输出 : 
Time after 2 hours : 18:33:33.369

Вы можете видеть, что текущее время 16:33:33.369 через 2 часа. Теперь вы можете сравнить это со старым способом добавления или вычитания часов в Java. С первого взгляда видно, какой способ лучше.

Пример 8. Как получить дату на 1 неделю позже

Это похоже на предыдущий пример получения времени на 2 часа позже, здесь мы узнаем, как получить дату на 1 неделю позже. LocalDate используется для представления даты без времени.У него есть метод plus(), который можно использовать для добавления дней, недель или месяцев.ChronoUnit используется для представления этой единицы времени. Поскольку LocalDate также неизменяем, любая операция модификации вернет новый экземпляр, поэтому не забудьте его сохранить.

LocalDate nextWeek = today.plus(1, ChronoUnit.WEEKS); 
System.out.println("Today is : " + today); 
System.out.println("Date after 1 week : " + nextWeek); 

输出: 
Today is : 2018-01-14 
Date after 1 week : 2018-01-21

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

Пример 9 Даты около года

Это продолжение предыдущего примера. В приведенном выше примере мы узнали, как использовать метод plus() LocalDate для добавления дней, недель или месяцев к дате, а теперь давайте узнаем, как использовать метод minus(), чтобы найти день годичной давности.

LocalDate previousYear = today.minus(1, ChronoUnit.YEARS); 
System.out.println("Date before 1 year : " + previousYear); 
LocalDate nextYear = today.plus(1, YEARS); 
System.out.println("Date after 1 year : " + nextYear); 

输出: 
Date before 1 year : 2013-01-14 
Date after 1 year : 2015-01-14

Видно, что всего два года: один в 2013 году, один в 2015 году, а также годы до и после 2014 года.

Пример 10. Использование часов в Java 8

Java 8 поставляется с классом Clock, который можно использовать для получения текущего мгновенного времени, даты или времени в определенном часовом поясе. Можно заменить часамиSystem.currentTimeInMillis()иTimeZone.getDefault() метод.

// Returns the current time based on your system clock and set to UTC. 
Clock clock = Clock.systemUTC(); 
System.out.println("Clock : " + clock); 

// Returns time based on system clock zone Clock defaultClock = 
Clock.systemDefaultZone(); 
System.out.println("Clock : " + clock); 

输出: 
Clock : SystemClock[Z] 
Clock : SystemClock[Z]

Вы можете сравнить эти часы с указанной датой, например:

public class MyClass { 
    private Clock clock; // dependency inject ... 

    public void process(LocalDate eventDate) { 

        if(eventDate.isBefore(LocalDate.now(clock)) { 
            ... 
        } 
    } 
}

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

Пример 11. Как узнать, предшествует ли дата другой дате в Java или после нее

Это также распространенная задача в реальных проектах. Как узнать, является ли дата раньше или позже другой даты или точно равна? В Java 8 класс LocalDate имеет методы isBefore() и isAfter(), которые можно использовать для сравнения двух дат. Метод isBefore() возвращает значение true, если дата вызова метода предшествует заданной дате.

LocalDate tomorrow = LocalDate.of(2014, 1, 15); 、if(tommorow.isAfter(today)){ 
    System.out.println("Tomorrow comes after today"); 
} 
LocalDate yesterday = today.minus(1, DAYS); 
if(yesterday.isBefore(today)){ 
    System.out.println("Yesterday is day before today"); 
} 

输出: 
Tomorrow comes after today 
Yesterday is day before today

Как видите, сравнение дат в Java 8 очень просто. Нет необходимости использовать другой класс, например Calendar, для аналогичных задач.

Пример 12. Обработка разных часовых поясов в Java 8

Java 8 разделяет не только дату и время, но и часовые пояса. Уже существует несколько групп классов, связанных с часовым поясом, например, ZonId представляет конкретный часовой пояс, а ZonedDateTime представляет время с часовым поясом. Он эквивалентен классу GregorianCalendar до Java 8. Используя этот класс, вы можете преобразовать местное время в соответствующее время в другом часовом поясе, как в следующем примере:

// Date and time with timezone in Java 8 ZoneId america = ZoneId.of("America/New_York"); 
LocalDateTime localtDateAndTime = LocalDateTime.now(); 
ZonedDateTime dateAndTimeInNewYork = ZonedDateTime.of(localtDateAndTime, america ); 
System.out.println("Current date and time in a particular timezone : " + dateAndTimeInNewYork); 

输出 : 
Current date and time in a particular timezone : 2014-01-14T16:33:33.373-05:00[America/New_York]

Вы можете сравнить его с предыдущим способом преобразования местного времени во время по Гринвичу. Кстати, как и до Java 8, не путайте текст с часовым поясом, иначе вы получите такое исключение:

Exception in thread "main" java.time.zone.ZoneRulesException: Unknown time-zone ID: ASIA/Tokyo
        at java.time.zone.ZoneRulesProvider.getProvider(ZoneRulesProvider.java:272)
        at java.time.zone.ZoneRulesProvider.getRules(ZoneRulesProvider.java:227)
        at java.time.ZoneRegion.ofId(ZoneRegion.java:120)
        at java.time.ZoneId.of(ZoneId.java:403)
        at java.time.ZoneId.of(ZoneId.java:351)

Пример 13. Как представить фиксированную дату, например срок действия кредитной карты

Точно так же, как MonthDay представляет повторяющийся день, YearMonth — это еще одна комбинация, которая представляет такие даты, как дата погашения кредитной карты, дата погашения срочного депозита, дата погашения опционов и так далее. Вы можете использовать этот класс, чтобы узнать, сколько дней в этом месяце.Метод lengthOfMonth() возвращает количество дней в этом экземпляре YearMonth.Это полезно для проверки того, сколько дней в феврале: 28 или 29.

YearMonth currentYearMonth = YearMonth.now(); System.out.printf("Days in month year %s: %d%n", currentYearMonth, currentYearMonth.lengthOfMonth()); 
YearMonth creditCardExpiry = YearMonth.of(2018, Month.FEBRUARY); 
System.out.printf("Your credit card expires on %s %n", creditCardExpiry); 

输出: 
Days in month year 2014-01: 31 
Your credit card expires on 2018-02

Пример 14. Как проверить високосный год в Java 8

В этом нет ничего сложного, класс LocalDate имеет метод isLeapYear(), который возвращает, является ли год, соответствующий текущей LocalDate, високосным. Если вы все еще хотите изобрести велосипед, вы можете посмотреть на этот код, Это логика определения того, является ли год високосным, написанная исключительно на Java.

if(today.isLeapYear()){ 
    System.out.println("This year is Leap year"); 
}else { 
    System.out.println("2018 is not a Leap year"); 
} 

输出: 2018 is not a Leap year

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

Пример 15 Сколько дней и сколько месяцев между двумя датами

Другая распространенная задача — вычислить, сколько дней, сколько недель или сколько лет между двумя заданными датами. Вы можете сделать это с помощью класса java.time.Period. В следующем примере мы рассчитаем количество месяцев между текущей датой и будущей датой.

LocalDate java8Release = LocalDate.of(2014, Month.MARCH, 14); 
Period periodToNextJavaRelease = 
Period.between(today, java8Release); 
System.out.println("Months left between today and Java 8 release : " + periodToNextJavaRelease.getMonths() ); 

输出: 
Months left between today and Java 8 release : 2

Как видите, этот месяц — январь, а дата выпуска Java 8 — март, поэтому между ними 2 месяца.

Пример 16 Дата и время со смещением часового пояса

В Java 8 вы можете использовать класс ZoneOffset для представления определенного часового пояса, например GMT или UTC 5:30 в Индии, вы можете использовать его статический метод ZoneOffset.of() для получения соответствующего часового пояса. Пока вы получаете это смещение, вы можете создать OffsetDateTime с LocalDateTime и этим смещением.

LocalDateTime datetime = LocalDateTime.of(2014, Month.JANUARY, 14, 19, 30); 
ZoneOffset offset = ZoneOffset.of("+05:30"); 
OffsetDateTime date = OffsetDateTime.of(datetime, offset); 
System.out.println("Date and Time with timezone offset in Java : " + date); 

输出 : 
Date and Time with timezone offset in Java : 2014-01-14T19:30+05:30

Вы можете видеть, что время и дата теперь связаны с часовым поясом. Другой момент заключается в том, что OffSetDateTime в основном предназначен для понимания машиной, если он предназначен для просмотра людьми, вы можете использовать класс ZoneDateTime.

Пример 17. Как получить текущую метку времени в Java 8

Если вы помните, как получить текущую метку времени до Java 8, теперь это проще простого. Класс Instant имеет статический фабричный метод now(), который возвращает текущую отметку времени следующим образом:

Instant timestamp = Instant.now(); 
System.out.println("What is value of this instant " + timestamp); 

输出 : 
What is value of this instant 2014-01-14T08:33:33.379Z

Видно, что текущий момент времени содержит дату и время, что очень похоже на java.util.date. На самом деле, мгновенная дата до Java 8. Вы можете использовать методы в этих двух классах для использования методов в Эти два типа. Например, дата. Из (мгновенно) используется для преобразования мгновенного до Java.Util.date, а дата. TTOIINSTANT () используется для преобразования даты в мгновение.

Пример 18. Как анализировать/форматировать дату, используя предопределенный формат в Java 8

До Java 8 форматирование времени и даты было технической задачей, наш хороший друг SimpleDateFormat не был потокобезопасным, и его использование в качестве локальной переменной для форматирования было немного громоздким. Благодаря локальным переменным потока это делает его полезным в многопоточной среде, но Java долгое время оставалась такой. На этот раз он представляет совершенно новый поточно-ориентированный модуль форматирования даты и времени. Он также поставляется с некоторыми предопределенными средствами форматирования, включая часто используемые форматы даты. Например, в этом примере мы используем предопределенный формат BASIC_ISO_DATE, который будет форматировать 14 февраля 2014 года как 20140114.

String dayAfterTommorrow = "20140116"; 
LocalDate formatted = LocalDate.parse(dayAfterTommorrow, 
DateTimeFormatter.BASIC_ISO_DATE); 
System.out.printf("Date generated from String %s is %s %n", dayAfterTommorrow, formatted); 

输出 : 
Date generated from String 20140116 is 2014-01-16

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

Пример 19. Как использовать пользовательский модуль форматирования для анализа дат в Java

В приведенном выше примере мы использовали встроенный модуль форматирования даты и времени для анализа строки даты. Конечно, предопределенные средства форматирования хороши, но иногда вам все равно нужно использовать собственный формат даты, и в этом случае вам нужно создать собственный экземпляр средства форматирования даты самостоятельно. Формат даты в приведенном ниже примере — «МММ дд гггг». Вы можете передать любой шаблон в статический метод ofPattern() класса DateTimeFormatter, и он вернет экземпляр с тем же литералом шаблона, что и в предыдущем примере. Например, M по-прежнему означает месяцы, а m по-прежнему означает минуты. Недопустимые шаблоны будут генерировать исключения DateTimeParseException, но если это логическая ошибка, например использование m вместо M, это невозможно.

String goodFriday = "Apr 18 2014"; 
try { 
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM dd yyyy");     
    LocalDate holiday = LocalDate.parse(goodFriday, formatter); 
    System.out.printf("Successfully parsed String %s, date is %s%n", goodFriday, holiday); 
} catch (DateTimeParseException ex) { 
    System.out.printf("%s is not parsable!%n", goodFriday); 
    ex.printStackTrace(); 
} 

输出 : 
Successfully parsed String Apr 18 2014, date is 2014-04-18

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

Пример 20. Как преобразовать дату в строку в Java 8

В приведенных выше двух примерах, хотя мы использовали класс DateTimeFormatter, мы в основном анализировали строки даты. В этом примере мы собираемся сделать прямо противоположное. Здесь у нас есть экземпляр класса LocalDateTime, который мы хотим преобразовать в отформатированную строку даты. Это, безусловно, самый простой и удобный способ преобразования дат в строки в Java. Следующий пример вернет отформатированную строку. Как и в предыдущем примере, нам по-прежнему нужно использовать указанную строку шаблона для создания экземпляра класса DateTimeFormatter, но вместо вызова метода разбора класса LocalDate вызывается его метод format(). Этот метод возвращает строку, представляющую текущую дату, и соответствующий шаблон определяется в переданном экземпляре DateTimeFormatter.

LocalDateTime arrivalDate = LocalDateTime.now(); 
try { 
    DateTimeFormatter format = DateTimeFormatter.ofPattern("MMM dd yyyy hh:mm a"); 
    String landing = arrivalDate.format(format); 
    System.out.printf("Arriving at : %s %n", landing); 
    } catch (DateTimeException ex) { 
    System.out.printf("%s can't be formatted!%n", arrivalDate); 
    ex.printStackTrace(); 
} 

Output : Arriving at : Jan 14 2014 04:33 PM

Как видите, текущее время представлено заданным шаблоном «МММ дд гггг чч:мм а», который включает месяц, представленный тремя буквами, и время, представленное AM и PM.

Несколько ключевых моментов API даты и времени в Java 8

Я полагаю, что после прочтения этих примеров у вас есть определенное представление о новом API времени и даты в Java 8. Теперь давайте рассмотрим некоторые ключевые элементы этого нового API.

  1. Он предоставляет javax.time.ZoneId для обработки часовых поясов.
  2. Он предоставляет классы LocalDate и LocalTime.
  3. Все классы в новом API времени и даты в Java 8 являются неизменяемыми и потокобезопасными, в отличие от предыдущих API дат и календаря, где ключевые классы, такие как java.util.Date и SimpleDateFormat, не являются потокобезопасными.
  4. Важным аспектом нового API времени и даты является то, что он четко определяет основные понятия времени и даты, такие как мгновенное время, продолжительность, дата, время, часовой пояс и период времени. Все они основаны на календарной системе ISO.
  5. Каждый разработчик Java должен знать по крайней мере эти пять классов в этом новом API:
    1. Мгновенный Представляет отметку времени, например 2014-01-14T02:20:13.592Z, которую можно получить из класса java.time.Clock следующим образом: Мгновенный текущий = Clock.system(ZoneId.of("Asia/Tokyo ")).мгновенное();
    2. LocalDate Представляет дату без времени, например 2014-01-14. Его можно использовать для хранения дней рождения, юбилеев, дат входа и т. д.
    3. LocalTime - представляет время без даты
    4. LocalDateTime — содержит время и дату, но без смещения часового пояса.
    5. ZonedDateTime — это полное время с часовым поясом, часовой пояс скорректирован в соответствии с UTC/средним временем по Гринвичу.
  6. Основным пакетом этой библиотеки является java.time, который содержит классы, представляющие даты, время, моменты времени и продолжительность. У него есть два подпакета, один — java.time.foramt, очевидно, для чего он используется, а другой — java.time.temporal, который может обращаться к различным полям с нижнего уровня.
  7. Часовой пояс относится к региону Земли, который использует одно и то же стандартное время. Каждый часовой пояс имеет уникальный идентификатор, а также формат региона/города (Азия/Токио) и время смещения от среднего времени по Гринвичу. Например, время смещения для Токио составляет +09:00.
  8. Класс OffsetDateTime фактически содержит LocalDateTime и ZoneOffset. Он используется для представления полной даты (год, месяц, день) и времени (часы, минуты, секунды, наносекунды) со смещением от среднего времени по Гринвичу (+/- часы:минуты, например +06:00 или -08:00). .
  9. Класс DateTimeFormatter используется для форматирования и анализа дат в Java. В отличие от SimpleDateFormat, он является неизменяемым и потокобезопасным, и при желании его можно присвоить статической переменной. Класс DateTimeFormatter предоставляет множество предопределенных средств форматирования, и вы также можете настроить нужный формат. Конечно, по соглашению он также имеет метод parse() для преобразования строк в даты, который выдает DateTimeParseException, если во время преобразования возникают какие-либо ошибки. Точно так же класс DateFormatter также имеет метод format() для форматирования дат, который генерирует исключение DateTimeException в случае сбоя.
  10. Опять же, два формата даты "МММ д гггг" и "ММм дд гггг" также немного различаются. Первый может распознавать две строки "2 января 2014" и "14 января 2014", а второй может распознавать две строки «2 января 2014 г.» и «14 января 2014 г.» Если это «2 января 2014 г.», будет выдано сообщение об ошибке, поскольку ожидается, что в месяц будут переданы два символа. Чтобы решить эту проблему, когда день представляет собой одну цифру, вам нужно добавить 0 впереди, например, «2 января 2014 года» следует изменить на «02 января 2014 года».

Это все, что касается нового API времени и даты в Java 8. Этих нескольких коротких примеров достаточно, чтобы понять некоторые новые классы в новом API. Поскольку это объясняется на основе реальных задач, вам не придется оглядываться, когда вы позже столкнетесь с обработкой времени и даты в Java. Мы узнали, как создавать и изменять экземпляры даты. Мы также узнали разницу между чистой датой, датой плюс время, датой плюс часовой пояс, как сравнить две даты, как узнать, сколько дней осталось от определенной даты до определенной даты, такой как следующий день рождения, годовщина или страховая дата. . Мы также узнали, как анализировать и форматировать даты потокобезопасным способом в Java 8, без необходимости использования локальных переменных потока или сложных сторонних библиотек. Новый API может справиться с любой задачей, связанной со временем и датой.

Раздел благосостояния:

«Дорога к большим данным становится Богом»

«Сотни загрузок TJava и ресурсов больших данных»