Класс YearMonth
Класс YearMonth из пакета java.time представляет
собой комбинацию года и месяца. Он не содержит информации
о дне, часе, минуте или секунде. Этот класс удобно
использовать, когда нужно работать только с годом и месяцем,
например, для указания срока действия банковской карты
или отчётного периода. Объекты класса YearMonth
являются неизменяемыми (immutable).
Для создания объекта YearMonth можно использовать
статический метод of, в первый параметр которого
передаётся год, а во второй - месяц. Также доступны методы
now (текущий год и месяц), parse (разбор строки)
и from (извлечение из другой временной сущности).
Синтаксис
YearMonth.of(year, month)
YearMonth.now()
YearMonth.parse(text)
Пример
Давайте создадим объект YearMonth с годом
2026 и месяцем 9 (сентябрь):
import java.time.YearMonth;
public class Main
{
public static void main(String[] args)
{
YearMonth ym = YearMonth.of(2026, 9);
System.out.println(ym);
}
}
Результат выполнения кода:
"2026-09"
Пример
Давайте получим текущий год и месяц с помощью
метода now и выведем отдельно год и месяц:
import java.time.YearMonth;
public class Main
{
public static void main(String[] args)
{
YearMonth ym = YearMonth.now();
System.out.println("Year: " + ym.getYear());
System.out.println("Month: " + ym.getMonthValue());
}
}
Результат выполнения кода (зависит от текущей даты):
"Year: 2026"
"Month: 9"
Пример
Давайте разберём строку в формате год-месяц
с помощью метода parse:
import java.time.YearMonth;
public class Main
{
public static void main(String[] args)
{
YearMonth ym = YearMonth.parse("2026-09");
System.out.println(ym);
}
}
Результат выполнения кода:
"2026-09"
Пример
Давайте прибавим несколько месяцев к текущему
значению с помощью метода plusMonths:
import java.time.YearMonth;
public class Main
{
public static void main(String[] args)
{
YearMonth ym = YearMonth.of(2026, 9);
YearMonth res = ym.plusMonths(4);
System.out.println(res);
}
}
Результат выполнения кода:
"2027-01"
Пример
Давайте узнаем количество дней в месяце с помощью
метода lengthOfMonth и проверим, является ли
год високосным с помощью метода isLeapYear:
import java.time.YearMonth;
public class Main
{
public static void main(String[] args)
{
YearMonth ym = YearMonth.of(2024, 2);
System.out.println("Days: " + ym.lengthOfMonth());
System.out.println("Leap: " + ym.isLeapYear());
}
}
Результат выполнения кода:
"Days: 29"
"Leap: true"
Смотрите также
-
класс
Year,
который представляет год -
класс
Month,
который представляет месяц -
класс
LocalDateTime,
который представляет дату и время -
класс
DateTimeFormatter,
который форматирует дату и время