📅  最后修改于: 2023-12-03 15:16:02.861000             🧑  作者: Mango
java.time.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
包下的一个重要类,程序员在开发中应当熟练掌握。