您可以使用声明的for
循环来做到这一点
- 今天的初始值
- 终止值作为月底
- 一天的增量值
在循环体内,打印 3 个字母的工作日名称 (ie EEE
) 和d
日期的日期 (ie ),格式为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
模式中使用。
一些有用的注释:
日期时间 APIjava.util
及其格式化 APISimpleDateFormat
已过时且容易出错。建议完全停止使用它们并切换到现代日期时间 API。在Trail: Date Time了解有关现代日期时间 API 的更多信息。
出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用ThreeTen-Backport,它将大部分java.time功能向后移植到 Java 6 和 7。
如果您正在为一个 Android 项目工作并且您的 Android API 级别仍然不符合 Java-8,请通过 desugaring和How to use ThreeTenABP in Android Project检查Java 8+ APIs available。