Метод get() класса LocalDate в Java

JavaBeginner
Практиковаться сейчас

Введение

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

Создание Java-файла

На этом шаге вы создадите новый Java-файл с именем LocalDateGet.java в каталоге вашего проекта. Этот файл будет содержать код для демонстрации метода get() класса LocalDate.

  1. Откройте терминал в вашей WebIDE. Каталог по умолчанию — ~/project.

  2. Создайте файл LocalDateGet.java с помощью команды touch:

    touch LocalDateGet.java
    

    Эта команда создает пустой файл в вашем текущем каталоге. Вы можете проверить его создание, перечислив файлы:

    ls
    

    Вы должны увидеть LocalDateGet.java в выводе.

Добавление необходимых импортов и структуры класса

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

  1. Откройте файл LocalDateGet.java в редакторе кода WebIDE.

  2. Добавьте следующий код в файл:

    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 реализует этот интерфейс.
  3. Сохраните файл LocalDateGet.java после добавления кода.

Получение дня месяца

На этом шаге вы добавите метод в свой класс LocalDateGet, который демонстрирует, как получить день месяца из объекта LocalDate, используя метод get() и ChronoField.DAY_OF_MONTH.

  1. Откройте файл LocalDateGet.java в редакторе кода WebIDE.

  2. Добавьте метод 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), чтобы извлечь соответствующее целочисленное значение.
  3. Сохраните файл LocalDateGet.java.

  4. Теперь давайте вызовем этот метод из main, чтобы увидеть его в действии. Измените свой метод main следующим образом:

    public static void main(String[] args) {
        getDayOfMonth();
        // Other methods will be called here later
    }
    
  5. Сохраните файл снова.

  6. Откройте терминал и скомпилируйте ваш Java-код:

    javac LocalDateGet.java
    

    Если ошибок нет, компиляция завершится без вывода.

  7. Запустите скомпилированную Java-программу:

    java LocalDateGet
    

    Вы должны увидеть вывод, похожий на этот:

    Date : 2021-05-17
    Day of the month: 17
    

    Это подтверждает, что метод getDayOfMonth() правильно извлекает день месяца.

Получение дня недели

Далее вы добавите еще один метод для получения дня недели. Поле ChronoField.DAY_OF_WEEK представляет день недели, где 1 — понедельник, 2 — вторник и так далее, до 7 — воскресенье.

  1. Откройте файл LocalDateGet.java в редакторе кода WebIDE.

  2. Добавьте метод 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) ...
        }
    }
    
  3. Сохраните файл LocalDateGet.java.

  4. Теперь вызовите этот новый метод из своего метода main. Обновите метод main следующим образом:

    public static void main(String[] args) {
        getDayOfMonth();
        getDayOfWeek(); // Call the new method
        // Other methods will be called here later
    }
    
  5. Сохраните файл снова.

  6. Скомпилируйте ваш Java-код из терминала:

    javac LocalDateGet.java
    
  7. Запустите скомпилированную 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 января и так далее.

  1. Откройте файл LocalDateGet.java в редакторе кода WebIDE.

  2. Добавьте метод 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) ...
        }
    }
    
  3. Сохраните файл LocalDateGet.java.

  4. Теперь вызовите этот последний метод из своего метода main. Обновите метод main следующим образом:

    public static void main(String[] args) {
        getDayOfMonth();
        getDayOfWeek();
        getDayOfYear(); // Call the new method
    }
    
  5. Сохраните файл снова.

  6. Скомпилируйте ваш Java-код из терминала:

    javac LocalDateGet.java
    
  7. Запустите скомпилированную 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: 137
    

    17 мая 2021 года был 137-м днем года, поэтому вывод Day of the year: 137 верен.

Резюме

В этой лабораторной работе вы узнали, как использовать метод get() класса Java LocalDate для получения определенных полей из дат. Вы создали программу, которая извлекала день месяца, день недели и день года для одной и той же даты (17 мая 2021 года). Используя метод get() вместе с перечислением ChronoField, вы можете эффективно извлекать конкретные компоненты даты, делая ваши Java-программы более точными при работе с данными времени.