Вы можете сделать это с помощью for
цикла, объявленного с помощью
- Исходное значение на сегодня
- Конечное значение на конец месяца
- Увеличить значение за один день
и внутри тела цикла напечатайте трехбуквенное название дня недели (т.е. EEE
) и день месяца (т.е. d
) даты в формате DateTimeFormatter.ofPattern("EEE - d", Locale.ENGLISH)
.
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;
import java.util.Locale;
class Main {
public static void main(String[] args) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE - d", Locale.ENGLISH);
LocalDate today = LocalDate.now();
for (LocalDate date = today; !date.isAfter(today.with(TemporalAdjusters.lastDayOfMonth())); date = date
.plusDays(1)) {
System.out.println(date.format(formatter));
}
}
}
Вывод:
Fri - 11
Sat - 12
Sun - 13
...
...
...
Wed - 30
Thu - 31
Примечание: все даты этого месяца, начиная с сегодняшнего дня, состоят из двух цифр, поэтому не имеет значения, используете ли вы d
или dd
для дня месяца. Однако, если вам нужно всегда печатать день месяца двумя цифрами (например, 01
вместо 1
), используйте dd
в шаблоне DateTimeFormatter
.
Некоторые полезные примечания:
API даты и времени java.util
и их API форматирования SimpleDateFormat
устарели и подвержены ошибкам. Рекомендуется полностью прекратить их использование и перейти на современный API даты и времени. Узнайте больше о современном API даты и времени на странице Trail: Date Time< /а>сильный>.
По какой-либо причине, если вам нужно придерживаться Java 6 или Java 7, вы можете использовать ThreeTen-Backport, который переносит большую часть функций java.time на Java 6 и 7.
Если вы работаете над проектом Android и ваш уровень Android API по-прежнему не соответствует Java-8, проверьте Java 8+ API, доступные через дешугаринг и Как для использования ThreeTenABP в Android Project.
person
Arvind Kumar Avinash
schedule
11.12.2020