求和本地时间(Java)
我试图用Java求两次和 假设我有以下本地时间:求和本地时间(Java),java,date,time,localtime,Java,Date,Time,Localtime,我试图用Java求两次和 假设我有以下本地时间: LocalTime L1 = LocalTime.parse("2:10"); LocalTime L2 = LocalTime.parse("13:20"); 有没有什么花哨的本地时间方法可以将小时数相加得到15:30(L1+L2) (注意:我在时间或日期包中寻找一些东西),没有字符串分割。基本上,LocalTime在时间上标记一个点,而不是持续时间。你不能在时间上增加两个点——这没有意义 LocalTime确实有一个plus()方法,但
LocalTime L1 = LocalTime.parse("2:10");
LocalTime L2 = LocalTime.parse("13:20");
有没有什么花哨的本地时间方法可以将小时数相加得到15:30(L1+L2)
(注意:我在时间或日期包中寻找一些东西),没有字符串分割。基本上,
LocalTime
在时间上标记一个点,而不是持续时间。你不能在时间上增加两个点——这没有意义
LocalTime
确实有一个plus()
方法,但它需要一个TemporalAmount
(一个Period
或Duration
)而不是LocalTime
。您可以通过使用Duration.ofNanos(LocalTime.toNanoOfDay())
将LocalTime
转换为Duration
来完成所需的操作,因此您可以执行类似于l1.plus(Duration.ofNanos(l2.toNanoOfDay())
(这基本上意味着您将第二个LocalTime
视为时间点,而不是从一天开始经过的时间量)基本上,LocalTime
标记时间点,而不是持续时间。您不能添加两个时间点-这没有意义
LocalTime
确实有一个plus()
方法,但它需要一个TemporalAmount
(一个Period
或Duration
)而不是LocalTime
。您可以通过使用Duration.ofNanos(LocalTime.tonanofday())将LocalTime
转换为Duration
,因此您可以执行类似于l1.plus(Duration.ofNanos(l2.toNanoOfDay())
(这基本上意味着您将第二个LocalTime
视为时间点,而不是一天开始以来经过的时间量)这是正确的。我将详细说明
您将两个关键概念混为一谈:
- 时间点,时刻,时间线上的一个点
- 时间跨度,未附加到时间线的时间量
第一个例子是同意下周三中午12:30在非洲/卡萨布兰卡
时区与您共进午餐。第二个例子是学校规定学生的午餐时间为50分钟
- 首先,使用
即时
(始终以UTC为单位)、偏移日期时间
(以小时和分钟为单位从UTC偏移)或分区日期时间
(如太平洋/奥克兰
指定的时区)类
- 对于第二个类,使用
期间
(年、月和日的计数)或持续时间
(整秒加小数秒的总数)类
对于没有日期和时区的仅日期值,请使用LocalDate
。对于没有日期和时区的日期值,请使用LocalTime
您的示例表明发生了两个事件,一个持续几分钟,另一个持续十三分钟。因此我们需要Duration
类。LocalTime
类不适用于您的问题
您可能会混淆使用时间表示法来表示这样的时间跨度。最好对这样的字符串使用标准格式。isPnYnMnDTnHnMnS
其中p
标记开始,而T
将年、月、日和时、分、秒分开
在解析或生成字符串时,java.time类默认使用标准格式
Duration d1 = Duration.parse( "PT2M10S" ) ;
Duration d2 = Duration.parse( "PT13M20S" ) ;
Duration d3 = d1.plus( d2 ) ;
d3.toString():PT15M30S
答案是正确的,我会详细说明
您将两个关键概念混为一谈:
- 时间点,时刻,时间线上的一个点
- 时间跨度,未附加到时间线的时间量
第一个例子是同意下周三中午12:30在非洲/卡萨布兰卡
时区与您共进午餐。第二个例子是学校规定学生的午餐时间为50分钟
- 首先,使用
即时
(始终以UTC为单位)、偏移日期时间
(以小时和分钟为单位从UTC偏移)或分区日期时间
(如太平洋/奥克兰
指定的时区)类
- 对于第二个类,使用
期间
(年、月和日的计数)或持续时间
(整秒加小数秒的总数)类
对于没有日期和时区的仅日期值,请使用LocalDate
。对于没有日期和时区的日期值,请使用LocalTime
您的示例表明发生了两个事件,一个持续几分钟,另一个持续十三分钟。因此我们需要Duration
类。LocalTime
类不适用于您的问题
您可能会混淆使用时间表示法来表示这样的时间跨度。最好对这样的字符串使用标准格式。isPnYnMnDTnHnMnS
其中p
标记开始,而T
将年、月、日和时、分、秒分开
在解析或生成字符串时,java.time类默认使用标准格式
Duration d1 = Duration.parse( "PT2M10S" ) ;
Duration d2 = Duration.parse( "PT13M20S" ) ;
Duration d3 = d1.plus( d2 ) ;
d3.toString():PT15M30S
您使用了错误的抽象。LocalTime.parse(“13:20”).plus(Duration.ofHours(2)。plusMinutes(10))
您使用了错误的抽象。LocalTime.parse(“13:20”).plus(Duration.ofHours(2)。plusMinutes(10))