📜  java.time.YearMonth类(1)

📅  最后修改于: 2023-12-03 15:16:02.861000             🧑  作者: Mango

Java.time.YearMonth类

java.time.YearMonth类表示了特定的年份和月份,没有时区信息。它包含了与年份和月份相关的操作,例如格式化和解析日期、比较两个日期、计算日期间隔等等。

创建YearMonth实例

可以使用工厂方法YearMonth.of(int year, int month)来创建一个YearMonth实例,其中year表示年份,month表示月份(1-12)。

YearMonth ym = YearMonth.of(2021, 9); // 表示2021年9月份
获取年份和月份

可以通过getYear()getMonthValue()方法获取YearMonth实例所表示的年份和月份。

int year = ym.getYear(); // 获取年份
int month = ym.getMonthValue(); // 获取月份
日期操作
加减月份

可以使用plusMonths(long months)minusMonths(long months)方法对YearMonth实例的月份进行加减操作,其中months参数表示要增加或减少的月份数。

YearMonth nextMonth = ym.plusMonths(1); // 获取下一个月份
YearMonth lastMonth = ym.minusMonths(1); // 获取上一个月份
计算两个日期间隔

可以使用until(ChronoUnit unit, Temporal endExclusive)方法计算两个日期之间的时间间隔,其中unit表示计算间隔的单位,endExclusive表示结束日期(不包括在时间间隔内)。

YearMonth prevYearMonth = YearMonth.of(2020, 10);
long monthsBetween = prevYearMonth.until(ym, ChronoUnit.MONTHS); // 计算两个月份之间相差的月份数
格式化和解析日期

可以使用DateTimeFormatter类来格式化和解析日期,YearMonth类提供了一些默认的格式化器方便使用。

默认格式化器

可以使用toString()方法来输出YearMonth实例的默认形式yyyy-MM

YearMonth ym = YearMonth.now();
System.out.println(ym); // 输出形如"2021-09"
自定义格式化器

可以使用自定义的格式化器来输出YearMonth实例的其他形式。

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/yyyy");
String formatted = ym.format(formatter); // 输出形如"09/2021"
解析日期

可以使用parse(CharSequence text, DateTimeFormatter formatter)方法来解析日期,返回一个YearMonth实例。

CharSequence input = "03/2020";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/yyyy");
YearMonth ym = YearMonth.parse(input, formatter); // 解析"03/2020"字符串,返回YearMonth实例
比较两个日期

可以使用compareTo(YearMonth anotherYearMonth)方法比较两个YearMonth实例的大小,返回一个整数值,表示两个日期的先后顺序。

YearMonth prevYearMonth = YearMonth.of(2020, 10);
int result = prevYearMonth.compareTo(ym); // 比较两个日期的先后顺序,返回一个整数值,result>0表示prevYearMonth比ym晚,result=0表示相等,result<0表示早于ym
总结

java.time.YearMonth类提供了丰富的日期操作方法和默认格式化器,更好地支持了时间操作和解析。它是java.time包下的一个重要类,程序员在开发中应当熟练掌握。