Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
求和本地时间(Java)_Java_Date_Time_Localtime - Fatal编程技术网

求和本地时间(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()方法,但

我试图用Java求两次和

假设我有以下本地时间:

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
类不适用于您的问题

您可能会混淆使用时间表示法来表示这样的时间跨度。最好对这样的字符串使用标准格式。is
PnYnMnDTnHnMnS
其中
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
类不适用于您的问题

您可能会混淆使用时间表示法来表示这样的时间跨度。最好对这样的字符串使用标准格式。is
PnYnMnDTnHnMnS
其中
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))