Java 比较多组日期周期
我有3套开始日期和结束日期Java 比较多组日期周期,java,datetime,comparison,Java,Datetime,Comparison,我有3套开始日期和结束日期 第一次-开始日期(2017年1月25日)和结束日期(2017年2月26日) 第二套(2017年1月25日)和结束日期(2017年2月26日) 第三套(2017年3月25日)和结束日期(2017年4月26日) 我想编写一个Java程序来比较这3个集合,并给出两个相等的集合: ((01/25/2017) - (02/26/2017)) 请注意,开始日期和结束日期来自两个不同的变量。org.threeten.extra.LocalDateRange::equals 有关L
第一次-开始日期(2017年1月25日)和结束日期(2017年2月26日)
第二套(2017年1月25日)和结束日期(2017年2月26日)
第三套(2017年3月25日)和结束日期(2017年4月26日) 我想编写一个Java程序来比较这3个集合,并给出两个相等的集合:
((01/25/2017) - (02/26/2017))
请注意,开始日期和结束日期来自两个不同的变量。org.threeten.extra.LocalDateRange::equals
有关LocalDateRange
类及其方法,请参见项目。此方法将一个LocalDateRange
与另一个进行比较,以确保这对日期相同
该类依赖于Java 8及更高版本中内置的类。这门课在这个网站上已经上过几百次了。因此,搜索堆栈溢出以获取更多信息
LocalDateRange.of(
LocalDate.of( 2017 , Month.JANUARY , 25 ) ,
LocalDate.of( 2017 , Month.FEBRUARY , 26 ) // Returns a `LocalDate` object.
) // Returns a `LocalDateRange` object.
.equals(
LocalDateRange.of(
LocalDate.of( 2017 , Month.MARCH , 25 ) ,
LocalDate.of( 2017 , Month.APRIL , 26 )
)
)
假的
ChronoUnit.DAYS::介于
如果要比较经过的天数,请使用ChronoUnit
enum
ChronoUnit.DAYS.between(
LocalDate.of( 2017 , Month.JANUARY , 25 ) ,
LocalDate.of( 2017 , Month.FEBRUARY , 26 )
) // Returns a `long` integer primitive.
==
ChronoUnit.DAYS.between(
LocalDate.of( 2017 , Month.MARCH , 25 ) ,
LocalDate.of( 2017 , Month.APRIL , 26 )
)
关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,& 该项目现已启动,建议迁移到类 要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是 您可以直接与数据库交换java.time对象。使用兼容的或更高版本。不需要字符串,也不需要
java.sql.*
类
从哪里获得java.time类
- 然后
- 内置的李>
- 标准JavaAPI的一部分,带有捆绑实现
- Java9添加了一些次要功能和修复
- 及
- 大部分java.time功能都在中向后移植到Java6和Java7
-
- 更高版本的Android捆绑包实现了java.time类
- 对于早期的Android(一种方法是创建一个自定义类(
),该类包含一组开始和结束日期。该类的MyDateSets
方法(覆盖equals
对象的
)指定日期集相等 示例代码:equals
import java.time.*; import java.time.format.*; public class CompareDateSets { public static void main(String [] args) { // Parse date strings to LocalDate objects // Make 3 set sof them - the input DateTimeFormatter parser = DateTimeFormatter.ofPattern("MM/dd/yyyy"); LocalDate start1 = LocalDate.parse("01/25/2017", parser); LocalDate end1 = LocalDate.parse("01/25/2017", parser); LocalDate start2 = LocalDate.parse("01/25/2017", parser); LocalDate end2 = LocalDate.parse("01/25/2017", parser); LocalDate start3 = LocalDate.parse("03/25/2017", parser); LocalDate end3 = LocalDate.parse("04/26/2017", parser); // Create MyDateSets objects - 3 sets of input MyDateSets set1 = new MyDateSets(start1, end1); MyDateSets set2 = new MyDateSets(start2, end2); MyDateSets set3 = new MyDateSets(start3, end3); // Compare each set and print the comparison result System.out.println(set1.equals(set2)); // true System.out.println(set1.equals(set3)); // false System.out.println(set2.equals(set3)); // false } } /* * Custom class has a set of the start and end dates. * Overrides Object class's equals method to define * the date set's equality. */ class MyDateSets { private LocalDate start; private LocalDate end; public MyDateSets(LocalDate start, LocalDate end) { this.start = start; this.end = end; } public LocalDate getStart() { return start; } public LocalDate getEnd() { return end; } @Override public boolean equals(Object o) { MyDateSets dates = (MyDateSets) o; if ((dates.getStart().equals(start)) && (dates.getEnd().equals(end))) { return true; } return false; } }
这个问题现在已经离题了,请发布你试图解决这个问题的代码。好吧,到目前为止,你的问题归结为解决“如何比较日期”,一旦你能做到这一点,你只需要在你的集合上重复这个过程。我认为问题的核心是“如何设计一个程序来管理和比较日期间隔?”然而,堆栈溢出不是一个设计服务,所以这个问题(据我所知)并不适合这个地方,对不起。