当前位置: 首页 > 知识库问答 >
问题:

Java8向LocalDateTime添加小时数不起作用

彭梓
2023-03-14

我试过如下所示,但在两种情况下显示的时间都是相同的?我做错了什么。

    LocalDateTime currentTime = LocalDateTime.now(ZoneId.of("UTC"));
    Instant instant = currentTime.toInstant(ZoneOffset.UTC);
    Date currentDate = Date.from(instant);
    System.out.println("Current Date = " + currentDate);
    currentTime.plusHours(12);
    Instant instant2 = currentTime.toInstant(ZoneOffset.UTC);
    Date expiryDate = Date.from(instant2);
    System.out.println("After 12 Hours = " + expiryDate);

“当前日期”时间显示与“12小时后”相同...

共有1个答案

陶弘业
2023-03-14

code>LocalDateTime的文档指定LocalDateTime的实例是不可变的,例如PlusHours

public LocalDateTime plusHours(长小时)

返回添加了指定小时数的LocalDateTime的副本。

参数:
hours-要添加的小时数可以为负数
返回:
基于此日期的LocalDateTime-添加了小时数的时间,不为null
抛出:
DateTimeException-如果结果超出了支持的日期范围

因此,您创建了localdatetime的一个新实例,当您执行plus操作时,您需要按如下方式分配该值:

LocalDateTime nextTime = currentTime.plusHours(12);
Instant instant2 = nextTime.toInstant(ZoneOffset.UTC);
Date expiryDate = Date.from(instant2);
System.out.println("After 12 Hours = " + expiryDate);

希望能对你有所帮助。

 类似资料:
  • 我生成doc与发音插件和它的工作,我添加了一个源目录添加额外的文件到类路径编译(maven-编译器插件).发音不工作与this.how我解决这个问题?我得到这个错误:[ERROR]未能执行目标org.codehaus.enunciate: maven-en

  • 我有一个简单的循环与像这样: 控制器。 据我所知,Angular将首先呈现视图,并用数字替换插值的,然后,在单击事件中,将计算字符串。 在这种情况下,完全获得预期效果,即:

  • 我想登录两种不同的用户类型。所以我这样编码。但是addListenerForSingleValueEvent中的for循环在此不起作用,请帮助。它好像不会进入for循环。请帮助我在这个登录卡。JAVA 火基

  • 问题内容: 令我惊讶的是,JavaScript的Date对象没有实现任何类型的add函数。 我只是想要一个可以做到这一点的函数: 我只是希望有一个方向的指针。 我需要进行字符串解析吗? 我可以使用setTime吗? 毫秒呢? 像这样: 不过,这似乎确实很骇人-甚至行得通吗? 问题答案: JavaScript本身具有可怕的日期/时间API。尽管如此,您仍可以使用纯JavaScript进行此操作:

  • 条件是这样的 和为模板的when and then部分指定的操作: 下面是在将其传递给DRLParser之前编译好的drl: 和我在控制台中看到的编译器错误:

  • 正如这篇stackoverflow文章中所述,在调用终端操作之前,不会实际应用筛选器。既然我在调用终端操作之前重新分配了stream的值,那么上面的代码是否仍然是使用Java8流的适当方法呢?