Робота із датами. LocalDate
Робота із датами. LocalDate – онлайн курс програмування. В Java для роботи з датами та часом використовується пакет `java.time`, що був введений в Java 8. Один із основних класів цього пакету для роботи з датами — `LocalDate`. Він представляє собою дату без інформації про час і часовий пояс. Це дозволяє зручно працювати з такими концепціями, як дати народження, дати подій, дні року тощо.
Основні можливості `LocalDate`
1. Створення об’єкта `LocalDate`
Для створення об’єкта `LocalDate` можна скористатися кількома статичними методами:
- `LocalDate.now()` — повертає поточну дату:
LocalDate currentDate = LocalDate.now();
System.out.println(“Поточна дата: ” + currentDate); - `LocalDate.of(year, month, dayOfMonth)` — створює конкретну дату, вказавши рік, місяць і день:
LocalDate specificDate = LocalDate.of(2023, 10, 17);
System.out.println(“Конкретна дата: ” + specificDate); - `LocalDate.parse(String date)` — перетворює рядок у форматі `yyyy-MM-dd` на об’єкт `LocalDate`:
LocalDate parsedDate = LocalDate.parse(“2024-05-25”);
System.out.println(“Парсинг дати: ” + parsedDate);
2. Отримання частин дати
Клас `LocalDate` дозволяє отримати різні частини дати, такі як рік, місяць або день:
- Отримання року:
int year = currentDate.getYear();
System.out.println(“Рік: ” + year); - Отримання місяця:
int month = currentDate.getMonthValue();
System.out.println(“Місяць: ” + month); - Отримання дня місяця:
int dayOfMonth = currentDate.getDayOfMonth();
System.out.println(“День місяця: ” + dayOfMonth); - Отримання дня тижня:
DayOfWeek dayOfWeek = currentDate.getDayOfWeek();
System.out.println(“День тижня: ” + dayOfWeek);
3. Операції з датами
Клас `LocalDate` надає методи для додавання або віднімання днів, місяців, років та інших операцій.
- Додавання днів, місяців, років:
LocalDate nextWeek = currentDate.plusDays(7);
LocalDate nextMonth = currentDate.plusMonths(1);
LocalDate nextYear = currentDate.plusYears(1);
System.out.println(“Через тиждень: ” + nextWeek);
System.out.println(“Через місяць: ” + nextMonth);
System.out.println(“Через рік: ” + nextYear); - Віднімання днів, місяців, років:
LocalDate lastWeek = currentDate.minusDays(7);
LocalDate lastMonth = currentDate.minusMonths(1);
LocalDate lastYear = currentDate.minusYears(1);
System.out.println(“Минулого тижня: ” + lastWeek);
System.out.println(“Минулого місяця: ” + lastMonth);
System.out.println(“Минулого року: ” + lastYear); - Порівняння дат:
LocalDate date1 = LocalDate.of(2023, 1, 1);
LocalDate date2 = LocalDate.of(2023, 12, 31);
boolean isBefore = date1.isBefore(date2); // Чи date1 перед date2
boolean isAfter = date1.isAfter(date2); // Чи date1 після date2
boolean isEqual = date1.isEqual(date2); // Чи дати рівні
System.out.println(“Перша дата перед другою? ” + isBefore);
System.out.println(“Перша дата після другої? ” + isAfter);
System.out.println(“Дати рівні? ” + isEqual);
4. Перевірки і властивості дати
Клас `LocalDate` надає також зручні методи для перевірки характеристик дати:
- Чи є рік високосним:
boolean isLeapYear = currentDate.isLeapYear();
System.out.println(“Чи високосний рік? ” + isLeapYear); - Отримання кількості днів у місяці:
int lengthOfMonth = currentDate.lengthOfMonth();
System.out.println(“Кількість днів у місяці: ” + lengthOfMonth); - Отримання кількості днів у році:
int lengthOfYear = currentDate.lengthOfYear();
System.out.println(“Кількість днів у році: ” + lengthOfYear);
5. Форматування дат
Щоб представити дату у потрібному форматі, використовують клас **`DateTimeFormatter`**:
- Форматування дати у рядок:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(“dd-MM-yyyy”);
String formattedDate = currentDate.format(formatter);
System.out.println(“Форматована дата: ” + formattedDate); - Парсинг рядка з певним форматом:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(“dd-MM-yyyy”);
LocalDate parsedDate = LocalDate.parse(“25-05-2024”, formatter);
System.out.println(“Парсинг дати: ” + parsedDate);
Приклад використання `LocalDate`:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class LocalDateExample {
public static void main(String[] args) {
// Створення дати
LocalDate currentDate = LocalDate.now();
LocalDate specificDate = LocalDate.of(2023, 10, 17);
LocalDate parsedDate = LocalDate.parse(“2024-05-25”);
System.out.println(“Поточна дата: ” + currentDate);
System.out.println(“Конкретна дата: ” + specificDate);
System.out.println(“Парсинг дати: ” + parsedDate);
// Операції з датами
LocalDate nextWeek = currentDate.plusDays(7);
LocalDate lastMonth = currentDate.minusMonths(1);
System.out.println(“Через тиждень: ” + nextWeek);
System.out.println(“Минулого місяця: ” + lastMonth);
// Форматування дати
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(“dd-MM-yyyy”);
String formattedDate = currentDate.format(formatter);
System.out.println(“Форматована дата: ” + formattedDate);
// Порівняння дат
boolean isBefore = specificDate.isBefore(parsedDate);
System.out.println(“Чи specificDate перед parsedDate? ” + isBefore);
}
}
Висновок
Клас `LocalDate` — це потужний інструмент для роботи з датами в Java, який надає зручні методи для маніпулювання, порівняння та форматування дат. Він є частиною нового API для роботи з датами та часом у Java, що забезпечує більшу гнучкість та простоту у використанні в порівнянні зі старими класами, такими як `Date` і `Calendar`.