Java 8计算两个日期之间的第一个月的数量



我有两个日期:

Start date: "2022-03-14"
End date: "2022-04-15"

我想要结果=1(对于日期,2022-04-01(

tl;dr

LocalDate.parse( "2022-03-14" ).datesUntil( LocalDate.parse( "2022-04-15" ) ).filter( localDate -> localDate.getDayOfMonth() == 1 ).count()

请在IdeOne.com上实时查看此代码。

1

详细信息

首先,将输入解析为LocalDate对象。

LocalDate start = LocalDate.parse( "2022-03-14" );
LocalDate end = LocalDate.parse( "2022-04-15" );

LocalDate#datesUntil方法在两个值之间创建一个LocalDate对象流。我们可以过滤该流,只保留月日为1(月1日(的流。然后我们要求对那些过滤过的对象进行计数。

long countFirstOfMonths =
start
.datesUntil( end )
.filter( localDate -> localDate.getDayOfMonth() == 1 )
.count();

报告。

String message = String.format( "From %s to %s contains %d first-of-month dates." , start.toString() , end.toString() , countFirstOfMonths );
System.out.println( message );

你的问题有点模糊,但这里有一些东西可能会帮助你开始。

LocalDate startDate = LocalDate.parse("2022-12-14");
LocalDate endDate = LocalDate.parse("2023-02-15");
long months = ChronoUnit.MONTHS.between(startDate, endDate);
System.out.println("There are " + months + " between the dates.");

这可以计算出两个日期之间的月份数。例如;2022-03-14";以及";2022-04-15";,有一个月的第一天。然而,这并不是防错的,因为";2022-05-01";以及";2022-06-01";会给出一个不准确的答案1,而实际上是2,所以请记住这一点。

相关内容

最新更新