关闭。这个问题需要细节或清晰。它目前不接受答案。**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。
23天前关门了。改进这个问题例如,我使用java.util.date,我有两个时间段:10:00:00-11:00:00,13:30:00-14:30:00我想从24小时中删除这些时间段并获取剩余的时间?
7vhp5slm1#
从不使用 java.util.Date . 这个类是与最早版本的java捆绑在一起的糟糕的日期时间类之一。这些遗留类在几年前被jsr310中定义的现代java.time类所取代。
java.util.Date
如果您使用的是一般时间,而不是特定日期,请使用 LocalTime 班级。
LocalTime
LocalTime.of( 10 , 0 )
创建一个类来定义时间范围。三个额外的图书馆有这样的范围类为一对学生 Instant 对象,以及一对 LocalDateTime 物体。但不幸的是,这对情侣没有课 LocalTime .在Java16及更高版本中,我们可以使用记录。或者定义一个常规类。
Instant
LocalDateTime
public record LocalTimeRange ( LocalTime start , LocalTime end ) ;
设置输入,从早到晚排序。
List< LocalTimeRange > inputs = List.of( new LocalTimeRange ( LocalTime.of( 10 , 0 ) , LocalTime.of( 11 , 0 ) ) , new LocalTimeRange ( LocalTime.of( 13 , 30 ) , LocalTime.of( 14 , 30 ) ) );
创建时间范围对象。对于一般的24小时工作制,我们可以从 LocalTime.MIN . 从最小值到第一个输入范围的起始值。下一个范围是从第一次输入的结束到连续输入的开始。泡沫,冲洗,重复。在最后一次输入时,使用 LocalTime.MIN 或者 MAX 最后,根据你的需要。请注意,我们使用半开放方法定义时间跨度,其中开始是包含的,而结束是独占的。这允许跨度整齐地对接,没有间隙。把这些应用到约会上( LocalDate ),指定时区( ZoneId )生产 ZonedDateTime 对象。但要明白,并非所有的时间值都存在于特定区域的特定日期。诸如夏令时(dst)之类的异常情况意味着一天的长度可能会有所不同,例如23小时、23.5小时或25小时。某些时间值可能重复或不存在。
LocalTime.MIN
MAX
LocalDate
ZoneId
ZonedDateTime
1条答案
按热度按时间7vhp5slm1#
避免遗留日期时间类
从不使用
java.util.Date
. 这个类是与最早版本的java捆绑在一起的糟糕的日期时间类之一。这些遗留类在几年前被jsr310中定义的现代java.time类所取代。本地时间
如果您使用的是一般时间,而不是特定日期,请使用
LocalTime
班级。创建一个类来定义时间范围。三个额外的图书馆有这样的范围类为一对学生
Instant
对象,以及一对LocalDateTime
物体。但不幸的是,这对情侣没有课LocalTime
.在Java16及更高版本中,我们可以使用记录。或者定义一个常规类。
设置输入,从早到晚排序。
创建时间范围对象。
对于一般的24小时工作制,我们可以从
LocalTime.MIN
. 从最小值到第一个输入范围的起始值。下一个范围是从第一次输入的结束到连续输入的开始。泡沫,冲洗,重复。在最后一次输入时,使用LocalTime.MIN
或者MAX
最后,根据你的需要。请注意,我们使用半开放方法定义时间跨度,其中开始是包含的,而结束是独占的。这允许跨度整齐地对接,没有间隙。
把这些应用到约会上(
LocalDate
),指定时区(ZoneId
)生产ZonedDateTime
对象。但要明白,并非所有的时间值都存在于特定区域的特定日期。诸如夏令时(dst)之类的异常情况意味着一天的长度可能会有所不同,例如23小时、23.5小时或25小时。某些时间值可能重复或不存在。