В дополнение к Lambda Expressions, потокам и нескольким незначительным улучшениям Java 8 также представила новый набор API времени и даты. Обработка дат, календари и времени Java всегда подвергалась критике, особенно ее решение определить java.util.date как модифицируемый и реализовать SimpleDateFormat как не-ratread-safe. Похоже, что Java поняла, что ей необходимо обеспечить лучшую поддержку для функциональности времени и даты, что также является хорошей вещью для сообществ, которые привыкли использовать библиотеку Joda Time и Date. Самое большое преимущество этой новой библиотеки времени и дат заключается в том, что она четко определяет некоторые концепции, связанные с временем и датой, такие как мгновенное время (мгновенное), продолжительность (продолжительность), дата (дата), время (время), часовой пояс (время -Зоне) и периода времени (период). Это также опирается на некоторые преимущества библиотеки Джода, такие как различие понимания времени и даты между людьми и машинами. Java 8 по-прежнему использует календарную систему ISO, и, в отличие от своих предшественников, классы в пакете Java.Time неизбежны и защищены. Новое время и дата API находится в пакете Java.Time.
1. INSTANT-IT представляет собой марки времени
2. Localdate-дат, который не включает в себя конкретное время, например, 2014-01-14. Его можно использовать для хранения дней рождения, годовщины, дат индукции и многого другого.
3. Localtime - он представляет собой время без дат
4.LocaldateTime-It содержит дату и время, но до сих пор нет информации о смещении или часового пояса.
5.zonedDateTime - это полная дата и время, содержащее часовой пояс, а смещение основано на времени UTC/Greenwich.
Новая библиотека также добавляет ZoneOffset и ZENEL, что может обеспечить лучшую поддержку часовых поясов. С новым DateTimeFormatter, анализ и форматирование дат также стали новыми. Просто упомянув эту статью, я написал эту статью, когда Java собиралась запустить эту новую функцию в настоящее время в прошлом году, так что вы обнаружите, что время в примерах все еще с прошлого года. Если вы запускаете эти примеры, значения, которые они возвращают, определенно верны.
Как Java 8 справляется с временем и датой
Кто -то спросил меня, как лучше всего выучить новую библиотеку? Мой ответ таков, это использовать его в реальных проектах. В реальном проекте будет множество потребностей, которые будут побудить разработчиков исследовать и исследовать эту новую библиотеку. Короче говоря, только сама задача действительно побудит вас изучить и учиться. То же самое относится и к новой дате и времени API Java 8. Чтобы узнать эту новую библиотеку Java 8, здесь я создал 20 примеров, ориентированных на задачи. Давайте начнем с простой задачи, например, как использовать библиотеку Java 8 Time и Date для представления сегодня, а затем еще больше сгенерировать полную дату с временным и часовым поясом, а затем изучим, как выполнить несколько более практических задач, таких как развитие Заявка на напоминание, чтобы выяснить, сколько дней будет до определенных дат, таких как дни рождения, воскресная годовщина, следующий день выставления счетов, следующий день премиум -класса или дата истечения срока действия кредитной карты.
Пример 1 Как получить дату дня в Java 8
В Java 8 есть класс, который называется LocalDate, который можно использовать для представления сегодняшней даты. Этот класс немного отличается от java.util.date, потому что он содержит только даты и отсутствие времени. Поэтому, если вам нужно только представлять дату без включения времени, вы можете использовать ее.
Кода -копия выглядит следующим образом:
Localdate сегодня = localdate.now ();
Выход
Сегодняшняя местная дата: 2014-01-14
Вы можете видеть, что это создает сегодняшнюю дату без времени. Он также форматирует дату, а затем выводит ее.
Пример 2 Как получить текущий год, месяц, день в Java 8
Класс LocalDate предоставляет некоторые удобные методы для извлечения года, месяца, дня и других атрибутов даты. Используя эти методы, вы можете получить любые атрибуты даты, которые вам нужны, без использования таких классов, как java.util.calendar:
Кода -копия выглядит следующим образом:
Localdate сегодня = localdate.now ();
int Год = сегодня.getyear ();
int месяц = сегодня.getmonthValue ();
int day = сегодня.getDayOfMonth ();
System.out.printf («Год: %d Месяц: %d День: %d /t %n», год, месяц, день);
Выход
Сегодняшняя местная дата: 2014-01-14
Год: 2014 Месяц: 1 день: 14
Как вы можете видеть, очень просто получить информацию года и месяца в Java 8. Просто используйте соответствующий метод Getter, без памяти, и это очень интуитивно. Вы можете сравнить его со старым методом письма для получения текущего года, месяца и дня в Java.
Пример 3 Как получить конкретную дату в Java 8
В первом примере мы видим, что очень просто сгенерировать дату дня с помощью статического метода сейчас (), но с помощью другого очень полезного заводского метода localdate.of () вы можете создать любую дату, которая принимает параметр года, месяца и дня, а затем возвращает эквивалентный экземпляр LocalDate. Есть еще одна хорошая новость об этом методе, что он не допустил никаких ошибок в предыдущем API. Что бы вы ни писали о дате, например, в примере ниже, он представляет 14 января, и нет скрытой логики.
Кода -копия выглядит следующим образом:
LocalDate DateOfBirth = LocalDate.of (2010, 01, 14);
System.out.println («Ваша дата рождения:» + dateofbirth);
Вывод: Ваша дата рождения: 2010-01-14
Видно, что дата творения - это то, что мы написали, 14 января 2014 года.
Пример 4 Как проверить, равны ли две даты на Java 8
Если вы говорите о фактической задаче обработки времени и даты в действительности, то одна распространенная вещь состоит в том, чтобы проверить, равны ли две даты. Вы можете часто столкнуться с вопросами о том, является ли сегодня особенным днем, таким как день рождения, годовщина или праздники. Иногда вам будет дана дата, чтобы проверить, является ли это определенный день, например, праздник. Следующий пример поможет вам выполнить этот тип задачи в Java 8. Как вы могли бы подумать, локация переопределяет метод равных для сравнения дат следующим образом:
Кода -копия выглядит следующим образом:
LocalDate Date1 = LocalDate.of (2014, 01, 14);
System.out.printf («Сегодня %s и дата 1 %s та же дата %n», сегодня, дата 1);
}
Выход
Сегодня 2014-01-14 и дата 1 2014-01-14
В этом случае две даты, которые мы сравниваем, равны. В то же время, если вы получите форматированную строку даты в коде, вы должны проанализировать ее в дату, прежде чем вы сможете сравнить ее. Вы можете сравнить этот пример с тем, как Java сравнивает даты ранее, и вы обнаружите, что это так захватывающе.
Пример 5 Как проверить на наличие дубликатов событий в Java 8, скажем, день рождения
В Java есть еще одна практическая задача, связанная со временем и датой, которая состоит в том, чтобы проверить дублируемые события, такие как ежемесячные дни выставления счетов, годовщина свадьбы, ежемесячные дни погашения или день, когда вы платите страховые взносы каждый год. Если вы работаете в компании по электронной коммерции, определенно будет модуль, который отправит пользователям пожелания на день рождения и отправит им поздравления на каждый важный праздник, такой как Рождество, День Благодарения, и в Индии это может быть Дипавали Фестиваль. Как определить, является ли это фестивалем или дубликатом в Java? Используйте класс месяца. Этот класс состоит из месяца и дня и не содержит годовой информации, что означает, что вы можете использовать ее для представления нескольких дней, которые появляются неоднократно каждый год. Конечно, есть некоторые другие комбинации, такие как класс Moldth. Он также неизменен и безопасен, как и другие классы в новой библиотеке времени и дате, а также класс значения. Давайте воспользуемся примером, чтобы увидеть, как использовать MonthDay, чтобы проверить дубликату даты:
Кода -копия выглядит следующим образом:
LocalDate DateOfBirth = LocalDate.of (2010, 01, 14);
Месячный день рождения = monthday.of (dateofbirth.getmonth (), dateofbirth.getdayofmonth ());
Месячный день текущего мондадда = monthday.from (сегодня);
if (currentMonthday.equals (день рождения)) {
System.out.println («много счастливых возвращений дня !!»);
}еще{
System.out.println («Извините, сегодня не ваш день рождения»);
}
Вывод: много счастливых возвращений дня !!
Хотя годы разные, сегодня день рождения, так что вы увидите желание дня рождения в результате. Вы можете настроить системное время и запустить программу, чтобы увидеть, напоминает ли вам, когда ваш следующий день рождения.
Пример 6 Как получить текущее время в Java 8
Это очень похоже на получение текущей даты в первом примере. На этот раз мы используем класс под названием LocalTime, который является временем без даты и является близким по сравнению с LocalDate. Здесь вы также можете использовать метод статического завода сейчас (), чтобы получить текущее время. Формат по умолчанию - HH: MM: SS: NNN, где NNN - наносекунд. Вы можете сравнить его с тем, как получить текущее время в Java 8 раньше.
Кода -копия выглядит следующим образом:
Localtime time = localtime.now ();
Выход
Местное время сейчас: 16: 33: 33,369 // В час, минуты, секунд, нано секунд
Как вы можете видеть, текущее время не включает даты, потому что у Localtime есть только время и нет дат.
Пример 7 Как увеличить количество часов времени
Много раз нам нужно добавлять часы, минуты или секунды, чтобы рассчитать будущее. Java 8 не только обеспечивает неизменные и безопасные классы, но и предоставляет несколько более удобных методов, таких как Plushours (), чтобы заменить исходный метод add (). Кстати, эти методы возвращают ссылку на новый экземпляр LocalTime, поскольку LocalTime неизменно, не забудьте сохранить эту новую ссылку.
Кода -копия выглядит следующим образом:
Localtime time = localtime.now ();
Localtime newtime = time.plushours (2);
System.out.println («Время через 2 часа:» + newtime);
Выход:
Время через 2 часа: 18: 33: 33,369
Вы можете видеть, что текущее время составляет 16: 33: 33,369 через 2 часа. Теперь вы можете сравнить его со старым способом добавления или уменьшения часов на Java. Вы можете сказать, какой метод лучше с первого взгляда.
Пример 8 Как получить дату через 1 неделю
Это похоже на предыдущий пример получения времени через 2 часа, здесь мы узнаем, как получить дату через 1 неделю. LocalDate используется для представления дат без времени. Поскольку LocalDate также неизменен, любая операция модификации возвращает новый экземпляр, поэтому не забудьте сохранить его.
Кода -копия выглядит следующим образом:
Localdate nextweek = сегодня.plus (1, chronounit.weeks);
System.out.println («Сегодня:» + сегодня);
System.out.println («Дата через 1 неделю:» + nextweek);
Выход:
Сегодня: 2014-01-14
Дата после 1 недели: 2014-01-21
Вы можете увидеть, какая дата будет через 7 дней, то есть неделя. Вы можете использовать этот метод для добавления месяца, года, часа, минуты или даже десяти лет, а также посетить класс Chronounit в Java API, чтобы получить больше вариантов.
Пример 9 дата около года
Это продолжение предыдущего примера. В приведенном выше примере мы узнали, как использовать метод LocalDate's Plus (), чтобы добавить дату, неделю или месяц к дате.
Кода -копия выглядит следующим образом:
Localdate pretalyear = сегодня.minus (1, chronounit.years);
System.out.println («Дата до 1 года:» + предыдущий);
Localdate nextyear = сегодня.plus (1, годы);
System.out.println («Дата через 1 год:» + nextyear);
Выход:
Дата до 1 года: 2013-01-14
Дата после 1 года: 2015-01-14
Видно, что уже два года, один в 2013 году, другой в 2015 году и годы около 2014 года.
Пример 10 Использование часов в Java 8
Java 8 поставляется с классом часов, который вы можете использовать для получения текущего мгновенного времени, даты или времени в определенном часовом поясе. Часы могут использоваться вместо System.currentTimeInmillis () и методов Timezone.getDefault ().
Кода -копия выглядит следующим образом:
// Возвращает текущее время на основе ваших системных часов и устанавливается в UTC.
Часы = часы.systemutc ();
System.out.println ("Clock:" + Clock);
// Возвращает время на основе системных часов в зоне часов defaultclock =
Clock.systemdefaultzone ();
System.out.println ("Clock:" + Clock);
Выход:
Часы: SystemClock [z]
Часы: SystemClock [z]
Вы можете сравнить эти часы с указанной датой, например:
Кода -копия выглядит следующим образом:
открытый класс myclass {
часы частных часов;
Public Void Process (LocalDate EventDate) {
if (eventDate.isbefore (localdate.now (clock)) {
...
}
}
}
Это довольно удобно, если вам нужно обрабатывать даты в разных часовых поясах.
Пример 11 Как определить, является ли дата до или после другой даты на Java
Это также общая задача в реальных проектах. Как сказать, является ли дата до или после другой даты, или точно равна? В Java 8 класс LocalDate имеет метод isBefore () и isafter (), который можно использовать для сравнения двух дат. Если дата вызова метода ранее, чем данная дата, метод isbefore () вернет true.
Кода -копия выглядит следующим образом:
Localdate завтра = localdate.of (2014, 1, 15);
System.out.println («Завтра придет после сегодняшнего дня»);
}
LocalDate вчера = сегодня. Minus (1, Days);
if (вчера.
System.out.println («Вчера за день до сегодняшнего дня»);
}
Выход:
Завтра наступает сегодня
Вчера за день до сегодняшнего дня
Видно, что дата в Java 8 довольно проста. Нет необходимости использовать другой класс, такой как календарь для выполнения аналогичных задач.
Пример 12 Обработка разных часовых поясов в Java 8
Java 8 не только отделяет даты и время, но и имеет часовой пояс. В настоящее время есть несколько наборов классов, связанных с часовым поясом. Это эквивалентно классе Gregoriancalendar до Java 8. Используя этот класс, вы можете преобразовать локальное время в соответствующее время в другом часовом поясе, например, в следующем примере:
Кода -копия выглядит следующим образом:
// дата и время с часовым поясом в Java 8 ZoneId America = ZoneID.OF ("America/new_york");
LocalDateTime LocalTDateAndtime = localDateTime.now ();
ZONEDDATETIME DATEANDTIMEINNEWYORK = ZONEDDATETIME.OF (LocalTDateAndtime, America);
System.out.println («Текущая дата и время в определенном часовом поясе:» + DateAndtimeinnewyork);
Выход:
Текущая дата и время в конкретном часовом поясе: 2014-01-14T16: 33: 33.373-05: 00 [America/new_york]
Вы можете сравнить его с предыдущим методом преобразования локального времени во время GMT. Кстати, как и до Java 8, не делайте текст, соответствующий часовому поясу неправильным, иначе вы столкнетесь с таким исключением:
Кода -копия выглядит следующим образом:
Исключение в потоке "Main" java.time.zone.zonerulesexception: неизвестный идентификатор времени зоны: Азия/Токио
на java.time.zone.zonerulesprovider.getProvider (ZonerulesProvider.java:272)
на java.time.zone.zonerulesprovider.getrules (zonerulesprovider.java:227)
на java.time.zoneregion.ofid (Zoneregion.java:120)
в java.time.zoneid.of (ZoneId.java:403)
в java.time.zoneid.of (ZoneId.java:351)
Пример 13 Как представить фиксированную дату, например, время истечения срока действия кредитной карты
Подобно тому, как MonthDay представляет собой повторяющийся день, Modomonth является еще одной комбинацией, которая представляет такие даты, как дата погашения кредитных карт, дата срока погашения с фиксированной депозитом, дата погашения опций. Вы можете использовать этот класс, чтобы выяснить, сколько дней в этом месяце.
Кода -копия выглядит следующим образом:
Yearmonth custryearmonth = yearmonth.now ();
Yearmonth creditcardexpiry = yearmonth.of (2018, месяц. Fofebruary);
System.out.printf («Ваша кредитная карта истекает на %s %n», CreditCardExpiry);
Выход:
Дни в месяце 2014-01: 31
Ваша кредитная карта истекает на 2018-02 гг.
Пример 14 Как проверить год прыжков в Java 8
Это не сложно. Если вы все еще хотите воссоздать колесо, вы можете посмотреть на этот код.
Кода -копия выглядит следующим образом:
if (сегодня.isleapyear ()) {
System.out.println («В этом году легальный год»);
}еще {
System.out.println («2014 - не лечебный год»);
}
Вывод: 2014 год не становленный год
Вы можете проверить еще несколько лет, чтобы увидеть, верны ли результаты.
Пример 15 Сколько дней и месяцев включено между двумя датами
Другая распространенная задача - рассчитать, сколько дней, недель или лет включено между двумя данными датами. Вы можете использовать класс java.time.period для выполнения этой функции. В следующем примере мы рассчитаем, сколько месяцев текущая дата отделена от будущей даты.
Кода -копия выглядит следующим образом:
Localdate java8release = localdate.of (2014, Month.march, 14);
Периодтонекстекьяварелиаз =
Период. Между (сегодня, Java8Release);
System.out.println («Месяцы остались между сегодняшним днем и выпуском Java 8:« + periortonextjavarelease.getmonths ());
Выход:
Остались месяцы между сегодняшним днем и выпуском Java 8: 2
Как вы можете видеть, этот месяц - январь, а дата выпуска Java 8 - март, поэтому между ними 2 месяца.
Пример 16 Дата и время при смещении часового пояса
В Java 8 вы можете использовать класс ZoneOffset для представления определенного часового пояса, такого как Индия, IS GMT или UTC5: 30, и вы можете использовать его статический метод ZoneOffset.of () для получения соответствующего часового пояса. Пока вы получаете это смещение, вы можете использовать LocalDateTime и это смещение для создания смещения.
Кода -копия выглядит следующим образом:
LocalDateTime DateTime = LocalDateTime.of (2014, месяц. January, 14, 19, 30);
ZoneOffset offset = ZoneOffset.of ("+05:30");
OffSetDateTime Date = OffSetDateTime.of (DateTime, Offset);
System.out.println («Дата и время при смещении часового пояса в Java:« + дата);
Выход:
Дата и время с временным застройкой в Java: 2014-01-14T19: 30+05: 30
Вы можете видеть, что текущее время и дата связаны с часовым поясом. Другой момент заключается в том, что OffsetDateTime в основном для понимания машин.
Пример 17 Как получить текущую временную метку в Java 8
Если вы все еще помните, как получить текущую временную метку перед Java 8, теперь это кусок торта. У мгновенного класса есть статический фабричный метод теперь (), который может вернуть текущую временную метку, следующим образом:
Кода -копия выглядит следующим образом:
Instant TimeStamp = instant.now ();
System.out.println («Что такое значение этого момента» + timeStamp);
Выход:
Какова стоимость этого мгновенного 2014-01-14T08: 33: 33.379Z
Видно, что текущая метка времени содержит дату и время, которая очень похожа на java.util.date. Преобразовать между ними, например, date.from (мгновенный) используется для преобразования мгновенного в java.util.date и date.toinstant () преобразовать дату в мгновенный.
Пример 18 Как проанализировать/формат даты с использованием предопределенного форматера в Java 8
Перед Java 8 форматирование времени и даты было технической работой. Благодаря темно-локальным переменным, это делает его работоспособным в многопоточной среде, но Java долгое время поддерживает это состояние. На этот раз он вводит совершенно новый защитный формат даты и времени. Он также поставляется с некоторыми предопределенными форматами, включая обще используемые форматы даты. Например, в этом примере мы используем предопределенный формат Basicisodate, который будет отформатировать 14 февраля 2014 года до 20140114.
Кода -копия выглядит следующим образом:
String dayaftertomrorw = "20140116";
Localdate formatted = localdate.parse (dayaftertommorrow,
DateTimeFormatter.basic_iso_date);
System.out.printf («Дата, сгенерированная из строки %s %s %n», dayaftertommorrow, formatted);
Выход:
Дата, сгенерированная из String 20140116-2014-01-16
Вы можете видеть, что сгенерированная дата соответствует значению указанной строки, что означает, что формат даты немного отличается.
Пример 19 Как использовать пользовательский форматер для анализа дат на Java
В приведенном выше примере мы использовали встроенный формат времени с временной датой, чтобы проанализировать строку даты. Конечно, предопределенный формат действительно хорош, но иногда вам все равно потребуется использовать пользовательский формат даты. Формат даты в следующем примере - «Mmm Dd Yyyy». Вы можете передать любой шаблон в DateTimeFormater's OfPattern Static (), который возвращает экземпляр, причем буквальное значение этого шаблона такое же, как и в предыдущем примере. Например, M по -прежнему представляет месяц, а M все еще остается сегментом. Неверный режим будет выбросить исключение DateTimeParseException, но если это логическая ошибка, например, использование M, когда пришло время использовать M, нечего делать.
Кода -копия выглядит следующим образом:
String Goodfriday = "18 апреля 2014 года";
пытаться {
DateTimeFormatter Formatter = DateTimeFormatter.ofPattern ("Mmm dd yyyy");
LocalDate Holiday = localDate.parse (GoodFriday, Formatter);
System.out.printf («Успешно проанализированная строка %s, дата %s %n», Goodfriday, Holiday);
} catch (dateTimeParseException ex) {
System.out.printf ("%s не расчета!%N", Goodfriday);
ex.printstacktrace ();
}
Выход:
Успешно проанализированная строка 18 апреля 2014 года, дата-2014-04-18
Вы можете видеть, что значение даты соответствует переданной строке, но формат отличается.
Пример 20 Как форматировать даты и преобразовать их в строки в Java 8
В двух предыдущих примерах, хотя мы использовали класс DateTimeFormatter, мы в основном анализируем строку даты. В этом примере мы собираемся сделать наоборот. Здесь у нас есть экземпляр класса LocalDateTime, который мы хотим преобразовать в форматированную строку даты. Это, безусловно, самый простой и удобный способ преобразования дат в струны в Java. Следующий пример вернет форматированную строку. То же самое, что и предыдущий пример, нам все еще нужно использовать указанную строку шаблона для создания экземпляра класса DateTimeFormatter, но вызов не является методом Parse в классе LocalDate, а его методом Format (). Этот метод вернет строку, представляющую текущую дату, и соответствующий шаблон определяется во входящем экземпляре DateTimeFormatter.
Кода -копия выглядит следующим образом:
LocalDateTime ravilationDate = localDateTime.now ();
пытаться {
DateTimeFormatter format = dateTimeFormatter.ofPattern ("Mmm Dd Yyyy HH: MM A");
String Landing = grrivalDate.format (format);
System.out.printf («Появление: %s %n», посадка);
} catch (dateTiMeexception ex) {
System.out.printf («%s не может быть отформатирована!%N», прибыл);
ex.printstacktrace ();
}
Вывод: Прибытие: 14 января 2014 г., 16:33
Можно видеть, что текущее время представлено данным «Mmm dd yyyy HH: MM A», который содержит месяц, представленный тремя буквами, и время, представленное AM и PM.
Несколько ключевых моментов даты и времени API в Java 8
Прочитав эти примеры, я считаю, что у вас есть определенное понимание нового времени и даты 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:
5.1) Мгновенно она представляет собой временную метку, например, 2014-01-14t02: 20: 13.592Z, которая может быть получена из класса Java.Time.Clock, например: мгновенный ток = clock.system (ZoneId.of ("Asia / Токио ")). Instant ();
5.2) LocalDate Это представляет собой дату без времени, такую как 2014-01-14. Его можно использовать для хранения дней рождения, годовщины, дат индукции и многого другого.
5.3) Localtime - это время без даты
5.4) LocalDateTime - это время и дата, но нет смещения с часовым поясом
5.5) ZONEDDATETIME Это постоянная регулировка часового пояса на основе времени UTC/Greenwich
1. Основным пакетом этой библиотеки является Java.Time, которая содержит классы, представляющие дату, время, мгновенное и продолжительность. Он имеет два подпакера, один - java.time.foramt, что очевидно, для чего это используется, а другой - java.time.temporal, который может получить доступ к различным полям с более низкого уровня.
2. Часовой пояс относится к региону на Земле, которая разделяет то же стандартное время. Каждый часовой Zone имеет уникальный идентификатор, а также есть формат региона/города (Азия/Токио), а также время компенсации, начиная с Гринвича. Например, время смещения в Токио составляет +09: 00.
3. COFFSETDATETIME Class фактически содержит LocalDateTime и ZoneOffset. Он используется для представления полной даты (год, месяц, день) и времени (час, минута, наносекунд), содержащая смещение времени Гринвич (+/ -час: минута, например +06: 00 или -08: 00).
4. Класс DateTimeFormatter используется для форматирования и дат анализа в Java. В отличие от SimpleDateFormat, он неизменен и безопасен для потока и может быть назначен статической переменной, если это необходимо. Класс DateTimeFormatter предоставляет много предопределенных форм, и вы также можете настроить желаемый формат. Конечно, согласно соглашению, он также имеет метод parse (), используемый для преобразования строки в дату, и если есть какие -либо ошибки во время преобразования, он бросит исключение DateTimeParseException. Аналогичным образом, класс DateFormatter также имеет метод Format () для форматирования дат.
5. Другими словами, два формата даты «Mmm D Yyyy» и «Mmm dd Yyyy» также немного разные. Тот, кто входит в «2 января 2014 года», сообщит об ошибке, потому что она ожидает, что два персонажа появятся с месяца. Чтобы решить эту проблему, если день - однозначные цифры, вы должны составить 0 впереди, например, «2 января 2014 года» следует изменить на «2 января 2014 года».
Это все о Java 8, новом API времени и дате. Этих коротких примеров достаточно, чтобы понять некоторые новые классы в этом новом API. Поскольку это объясняется на основе фактических задач, когда вы сталкиваетесь с работой на Java, которая должна обрабатывать время и дату, вам больше не нужно искать. Мы научились создавать и изменять экземпляры даты. Мы также узнали о различиях между чистыми датами, датой плюс время, датой плюс часовые пояса, знаем, как сравнить две даты и как найти определенный день до указанной даты, например, на следующий день рождения, годовщина или дата страхования. Мы также узнали, как проанализировать и формат датируются в Java 8, безопасным для потока, не используя нитовые переменные или сторонние библиотеки. Новый API компетентен в любое время и дату, связанные с датой.