Введение
В этой лабораторной работе вы узнаете, как использовать метод get() класса LocalDate в Java для извлечения определенных полей из даты. Этот метод полезен, когда вам нужно получить только определенное поле, например, день месяца или день недели, из заданной даты. Вы можете использовать перечисление ChronoField для указания, какое поле необходимо извлечь.
Создание Java-файла
На этом шаге вы создадите новый Java-файл с именем LocalDateGet.java в каталоге вашего проекта. Этот файл будет содержать код для демонстрации метода get() класса LocalDate.
Откройте терминал в вашей WebIDE. Каталог по умолчанию —
~/project.Создайте файл
LocalDateGet.javaс помощью командыtouch:touch LocalDateGet.javaЭта команда создает пустой файл в вашем текущем каталоге. Вы можете проверить его создание, перечислив файлы:
lsВы должны увидеть
LocalDateGet.javaв выводе.
Добавление необходимых импортов и структуры класса
Теперь вы добавите базовую структуру в ваш файл LocalDateGet.java, включая необходимые операторы импорта и определение основного класса. Эти импорты необходимы для работы с API даты и времени в Java.
Откройте файл
LocalDateGet.javaв редакторе кода WebIDE.Добавьте следующий код в файл:
import java.time.LocalDate; import java.time.temporal.ChronoField; import java.time.temporal.TemporalAccessor; import java.time.temporal.TemporalField; public class LocalDateGet { public static void main(String[] args) { // This is where we will call our methods later } }java.time.LocalDate: Этот класс представляет дату без часового пояса.java.time.temporal.ChronoField: Это перечисление предоставляет стандартный набор полей для даты и времени, таких какDAY_OF_MONTH,DAY_OF_WEEK,DAY_OF_YEARи т. д.java.time.temporal.TemporalAccessor: Этот интерфейс обеспечивает доступ только для чтения к временному объекту, такому какLocalDate. Методget()определен в этом интерфейсе.java.time.temporal.TemporalField: Этот интерфейс представляет поле даты-времени, такое как год, месяц или день месяца.ChronoFieldреализует этот интерфейс.
Сохраните файл
LocalDateGet.javaпосле добавления кода.
Получение дня месяца
На этом шаге вы добавите метод в свой класс LocalDateGet, который демонстрирует, как получить день месяца из объекта LocalDate, используя метод get() и ChronoField.DAY_OF_MONTH.
Откройте файл
LocalDateGet.javaв редакторе кода WebIDE.Добавьте метод
getDayOfMonth()внутри классаLocalDateGet, но за пределами методаmain:import java.time.LocalDate; import java.time.temporal.ChronoField; import java.time.temporal.TemporalAccessor; import java.time.temporal.TemporalField; public class LocalDateGet { public static void getDayOfMonth() { // Define the field to retrieve: DAY_OF_MONTH TemporalField field = ChronoField.DAY_OF_MONTH; // Create a LocalDate object for May 17, 2021 TemporalAccessor date = LocalDate.of(2021, 5, 17); // Display the original date System.out.println("Date : " + date); // Retrieve the day of the month using the get() method int val = date.get(field); // Display the retrieved day of the month System.out.println("Day of the month: " + val); System.out.println(); // Add a blank line for better readability } public static void main(String[] args) { // This is where we will call our methods later } }LocalDate.of(2021, 5, 17): Создает объектLocalDate, представляющий 17 мая 2021 года.ChronoField.DAY_OF_MONTH: Указывает, что мы хотим получить день месяца.date.get(field): Это ядро операции. Он вызывает методget()для объектаdate, передаваяfield(который являетсяChronoField.DAY_OF_MONTH), чтобы извлечь соответствующее целочисленное значение.
Сохраните файл
LocalDateGet.java.Теперь давайте вызовем этот метод из
main, чтобы увидеть его в действии. Измените свой методmainследующим образом:public static void main(String[] args) { getDayOfMonth(); // Other methods will be called here later }Сохраните файл снова.
Откройте терминал и скомпилируйте ваш Java-код:
javac LocalDateGet.javaЕсли ошибок нет, компиляция завершится без вывода.
Запустите скомпилированную Java-программу:
java LocalDateGetВы должны увидеть вывод, похожий на этот:
Date : 2021-05-17 Day of the month: 17Это подтверждает, что метод
getDayOfMonth()правильно извлекает день месяца.
Получение дня недели
Далее вы добавите еще один метод для получения дня недели. Поле ChronoField.DAY_OF_WEEK представляет день недели, где 1 — понедельник, 2 — вторник и так далее, до 7 — воскресенье.
Откройте файл
LocalDateGet.javaв редакторе кода WebIDE.Добавьте метод
getDayOfWeek()внутри классаLocalDateGet, под методомgetDayOfMonth():import java.time.LocalDate; import java.time.temporal.ChronoField; import java.time.temporal.TemporalAccessor; import java.time.temporal.TemporalField; public class LocalDateGet { // ... (getDayOfMonth method as defined previously) ... public static void getDayOfWeek() { // Define the field to retrieve: DAY_OF_WEEK TemporalField field = ChronoField.DAY_OF_WEEK; // Create a LocalDate object for May 17, 2021 (which was a Monday) TemporalAccessor date = LocalDate.of(2021, 5, 17); // Display the original date System.out.println("Date : " + date); // Retrieve the day of the week using the get() method int val = date.get(field); // Display the retrieved day of the week System.out.println("Day of the week: " + val); System.out.println(); // Add a blank line for better readability } public static void main(String[] args) { // ... (main method as defined previously) ... } }Сохраните файл
LocalDateGet.java.Теперь вызовите этот новый метод из своего метода
main. Обновите методmainследующим образом:public static void main(String[] args) { getDayOfMonth(); getDayOfWeek(); // Call the new method // Other methods will be called here later }Сохраните файл снова.
Скомпилируйте ваш Java-код из терминала:
javac LocalDateGet.javaЗапустите скомпилированную Java-программу:
java LocalDateGetВы должны увидеть вывод, похожий на этот:
Date : 2021-05-17 Day of the month: 17 Date : 2021-05-17 Day of the week: 1Поскольку 17 мая 2021 года был понедельник, а
ChronoField.DAY_OF_WEEKпредставляет понедельник как 1, выводDay of the week: 1верен.
Получение дня года
Наконец, вы добавите метод для получения дня года. Поле ChronoField.DAY_OF_YEAR представляет день года, где 1 — 1 января и так далее.
Откройте файл
LocalDateGet.javaв редакторе кода WebIDE.Добавьте метод
getDayOfYear()внутри классаLocalDateGet, под методомgetDayOfWeek():import java.time.LocalDate; import java.time.temporal.ChronoField; import java.time.temporal.TemporalAccessor; import java.time.temporal.TemporalField; public class LocalDateGet { // ... (getDayOfMonth and getDayOfWeek methods as defined previously) ... public static void getDayOfYear() { // Define the field to retrieve: DAY_OF_YEAR TemporalField field = ChronoField.DAY_OF_YEAR; // Create a LocalDate object for May 17, 2021 TemporalAccessor date = LocalDate.of(2021, 5, 17); // Display the original date System.out.println("Date : " + date); // Retrieve the day of the year using the get() method int val = date.get(field); // Display the retrieved day of the year System.out.println("Day of the year: " + val); System.out.println(); // Add a blank line for better readability } public static void main(String[] args) { // ... (main method as defined previously) ... } }Сохраните файл
LocalDateGet.java.Теперь вызовите этот последний метод из своего метода
main. Обновите методmainследующим образом:public static void main(String[] args) { getDayOfMonth(); getDayOfWeek(); getDayOfYear(); // Call the new method }Сохраните файл снова.
Скомпилируйте ваш Java-код из терминала:
javac LocalDateGet.javaЗапустите скомпилированную Java-программу:
java LocalDateGetВы должны увидеть полный вывод, включая день года:
Date : 2021-05-17 Day of the month: 17 Date : 2021-05-17 Day of the week: 1 Date : 2021-05-17 Day of the year: 13717 мая 2021 года был 137-м днем года, поэтому вывод
Day of the year: 137верен.
Резюме
В этой лабораторной работе вы узнали, как использовать метод get() класса Java LocalDate для получения определенных полей из дат. Вы создали программу, которая извлекала день месяца, день недели и день года для одной и той же даты (17 мая 2021 года). Используя метод get() вместе с перечислением ChronoField, вы можете эффективно извлекать конкретные компоненты даты, делая ваши Java-программы более точными при работе с данными времени.



