Работа с датами в Java 8

{title}

Работа с датами всегда была поворотным моментом в карьере программистов. Это отчасти потому, что в предыдущих версиях Java это было немного запутанным и противоречивым. Тем не менее, в новой версии реализован API, который позволяет нам получить максимальную отдачу от языка с помощью более понятных и простых в использовании методов.
Это делает работу с форматами даты и времени в Java не мучительной. Для этого мы должны изучить новые формы и возможности, которые дает нам язык, с целью превращения одной из точек, которая порождает больше путаницы, в то, что мы доминируем должным образом.

Новые распространенные методы классов Date / Time


Чтобы упростить работу, команда разработчиков Java предоставила нам ряд распространенных методов, которые мы можем использовать как при работе с датами, так и при работе с часами . Это делает усилия по обучению меньшими благодаря одинаковому поведению для обоих типов объектов.
Мы собираемся перечислить некоторые из методов, которые выделяются рядом с небольшим объяснением того, для чего мы можем их использовать, чтобы у нас была общая идея, когда мы перейдем к практической части позже.
в

Этот метод позволяет нам создать комбинацию объекта, который вызывает его с другим объектом.
формат

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

Это позволяет нам получить некоторый элемент, который мы указываем.
является

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

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

Это позволяет нам конвертировать из одного типа в другой.
Теперь с этим знанием мы можем перейти к другим вопросам в рамках той же темы дат и времени в Java .

Рассчитать текущую дату и время


Поскольку мы объясняли формы, которые используются в Java, теперь они изменились для новой версии, поэтому для повторения примеров, которые мы дадим, нам потребуется версия 8 набора средств разработки языка, в противном случае мы получим ошибку, такую ​​как следующее:

{title}


Как только суть ясна, давайте посмотрим, что мы должны делать дальше, чтобы получить текущую информацию о дате и времени в Java.
Для этого мы создадим класс, в котором мы будем создавать экземпляры объектов типа LocalDate, LocalTime и LocalDateTime . Каждый из них даст нам соответственно текущую дату, текущее время и текущую дату и время.
Это очень полезно в таких случаях, как системные журналы, где мы должны фиксировать точный момент, когда происходит действие или событие, которое мы заинтересованы оставить зарегистрированным. Для достижения цели мы можем сделать код, подобный следующему:
 импорт java.time. *; открытый класс CurrentTime {открытый статический void main (String [] args) {LocalDate current date = LocalDate.now (); System.out.println (текущая дата); LocalTime currentTime = LocalTime.now (); System.out.println (Текущее время); LocalDateTime now = LocalDateTime.now (); System.out.println (сейчас); }} 

Как мы видим, все, что мы делаем, это объявляем наши объекты уже упомянутых типов и присваиваем им значение, которое возвращает нас с помощью метода now (), который действительно заботится о предоставлении текущей даты и времени, тогда мы заботимся только о Распечатать каждый из заявленных объектов.
важно

Очень важно включить пакет java.time целиком, чтобы мы могли получить доступ ко всем функциям, которые мы используем, также, если у нас есть сомнения в официальной документации, мы можем найти более подробную информацию о параметрах того же самого.
Давайте посмотрим, как выглядит выполнение нашей программы:

{title}

Формат даты


Другим аспектом, который мы всегда должны принимать во внимание, является способ отображения информации. С точки зрения дат у нас много форм, однако некоторые из них более удобны, чем другие в некоторых ситуациях. Это в большинстве случаев заставляет нас выполнять дополнительные операции, которые заставляют нас писать дополнительные строки кода, что в Java 8 уже не так сложно.
В зависимости от того, какое приложение мы разрабатываем, мы хотим показывать месяц по его номеру в календаре или по его названию, но название может быть полным или сокращенным в равной степени день или год, все это дает нам очень широкий выбор опций, все действует в равной степени. Для решения этой проблемы мы можем использовать форматировщик даты.
Для форматирования дат у нас есть несколько подстановочных знаков или параметров, которые позволяют нам получить значения, описанные в предыдущем абзаце. Давайте посмотрим, какие из них наиболее важны.
  • и это позволяет нам получить доступ к году в четырех или двухзначном формате (2014 или 14).
  • D, позволяет нам получить номер дня года (225).
  • d, в отличие от предыдущего, возвращает номер дня рассматриваемого месяца (27).
  • L, помогает нам получить месяц года в числовой форме, M дает нам месяц в тексте.
  • H, это дает нам время.
  • Да, это дает нам секунды.
  • м, позволяет нам получить минуты.
  • а, дает нам утра или вечера часа.
  • z, позволяет нам получить доступ к названию часового пояса.
Так как мы знаем основные параметры формата, мы попробуем новое упражнение, в следующем коде мы сделаем несколько форматов, сначала мы получим текущую дату и преобразуем ее в формат год / месяц / день с косыми чертами в Вместо сценариев мы собираемся проанализировать статическую дату, которая поступает из строки с тем же форматом, и, наконец, мы покажем полную дату, в том числе am или pm, чтобы использовать подстановочные знаки, которые мы объяснили выше. Давайте посмотрим на соответствующий код:
 импорт java.time. *; импорт java.time.format. *; открытый класс Date Format {public static void main (String [] args) {DateTimeFormatter dateFormatted = DateTimeFormatter.ofPattern ("yyyy / LL / dd"); System.out.println (DateFormatched.format (LocalDate.now ())); System.out.println (LocalDate.parse («2014/11/15», Дата отформатирована)); DateTimeFormatter timezone = DateTimeFormatter.ofPattern ("д ММММ, гггг ч: мм а"); System.out.println (ZonedDateTime.now (). Формат (часовой пояс)); }} 

Первое, на что мы можем обратить внимание, это то, что мы должны импортировать как пакет java.time со всеми его классами, так и пакет java.time.format со всеми его классами. Можно выполнить упражнение, импортировав определенные классы, но что мы оставляем домашнее задание, также есть задача просмотреть официальную документацию.
Затем мы видим, что мы создаем объект типа DateTimeFormatter и используем методPattern (), который принимает указанные подстановочные знаки, мы видим, что мы помещаем подстановочные знаки в дубликате как гггг, чтобы получить четыре цифры текущего года или также мм, чтобы получить две цифры минуты
Наконец, мы печатаем каждую из дат в их форматах и ​​получаем следующее при выполнении нашей программы:

{title}


Именно здесь мы можем наблюдать все изменения, которые мы внесли в формат дат, благодаря чему мы можем придать больший смысл и удобочитаемость как для человеческого уровня, так и для механизмов баз данных, таких как MySQL, которые должны получать дату по умолчанию. в формате гггг-лл-дд .

Используйте статические даты из текстовых строк


Другое использование, которое мы можем дать новым Java- классам даты и времени, - это возможность использовать даты, которые берутся из текстовой строки, они могут быть созданы пользователем, из текстового файла и т. Д. Но важно то, что мы должны ими манипулировать, и для этого мы можем использовать все инструменты, которые у нас есть.
Давайте посмотрим на следующий код, используя то, что мы видели, мы можем вносить изменения в дату из текстовой строки.
 импорт java.time. *; импорт java.time.format. *; public class Static Date {public static void main (String [] args) {String start date = "1906-12-31"; LocalDate dateTake = LocalDate.parse (начальная дата); System.out.println («Дата:» + дата получения); Дата начала строки Время = "1906-12-31T12: 05"; LocalDateTime dateTimeTop = LocalDateTime.parse (start dateTime); System.out.println («Дата / Время:» + Дата Времени); DateTimeFormatter df = DateTimeFormatter.ofPattern ("dd MMM uuuu"); System.out.println (dateTaking + "В новом формате:" + df.format (dateTaking)); }} 

В коде мы видим, как мы создаем начальную дату в текстовой строке, затем с помощью объекта типа LocalDate мы используем метод Parse для включения текстовой строки в объект типа даты, затем мы печатаем объект и видим, что если вы правильно взяли дату, Мы повторяем ту же процедуру, но с использованием даты и времени с LocalDateTime .
Наконец, мы берем наш первый созданный объект и применяем новый формат, подтверждая тем самым, что мы смогли ввести и манипулировать датой, которую мы установили из текстовой строки. Давайте посмотрим, как это выглядит при запуске нашей программы:

$config[ads_text6] not found

{title}


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