Java 8 计算两个日期之间的第一个月份
Java 8 calculate how many 1st of the months between two dates
我有两个约会对象:
Start date: "2022-03-14"
End date: "2022-04-15"
我想要结果 = 1(日期为 2022-04-01)
你的问题有点含糊,但这里有一些东西可能会帮助你开始。
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”之间,有一个月的1号。但是,这不是防错的,因为“2022-05-01”和“2022-06-01”会提供不准确的答案 1,而实际上是 2,所以请记住这一点。
tl;博士
LocalDate.parse( "2022-03-14" ).datesUntil( LocalDate.parse( "2022-04-15" ) ).filter( localDate -> localDate.getDayOfMonth() == 1 ).count()
看到这个code run live at IdeOne.com。
1
详情
首先,将输入解析为 LocalDate
个对象。
LocalDate start = LocalDate.parse( "2022-03-14" );
LocalDate end = LocalDate.parse( "2022-04-15" );
LocalDate#datesUntil
方法在两个值之间创建一个 LocalDate
对象流。我们可以过滤该流以仅保留 day-of-month 为 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 );
我有两个约会对象:
Start date: "2022-03-14"
End date: "2022-04-15"
我想要结果 = 1(日期为 2022-04-01)
你的问题有点含糊,但这里有一些东西可能会帮助你开始。
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”之间,有一个月的1号。但是,这不是防错的,因为“2022-05-01”和“2022-06-01”会提供不准确的答案 1,而实际上是 2,所以请记住这一点。
tl;博士
LocalDate.parse( "2022-03-14" ).datesUntil( LocalDate.parse( "2022-04-15" ) ).filter( localDate -> localDate.getDayOfMonth() == 1 ).count()
看到这个code run live at IdeOne.com。
1
详情
首先,将输入解析为 LocalDate
个对象。
LocalDate start = LocalDate.parse( "2022-03-14" );
LocalDate end = LocalDate.parse( "2022-04-15" );
LocalDate#datesUntil
方法在两个值之间创建一个 LocalDate
对象流。我们可以过滤该流以仅保留 day-of-month 为 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 );