LocalDateTime 删除毫秒

新手上路,请多包涵

我正在使用 Java 8 开发 Java 应用程序。

我已经集成了数据库(多个数据库 Oracle、Mysql、Postgres),并且在 DB 中我将创建日期字符串化。

数据库中的日期格式是 - 2015-07-29 16:23:28.143

我从数据库中获取这个并在 Localdatetime 对象中设置

myObj.setCreated(rs.getTimestamp("created").toLocalDateTime());

所以这里的问题是我不想在响应中显示/发送毫秒。我想显示/发送日期,如 2015-07-29 16:23:28

我尝试了格式化程序,但它失败了,因为它给出了一个字符串,我不想将 LocalDateTime 对象更改为字符串,因为这会导致所有 Java 应用程序发生重大变化。所以想找到解决方案

任何人都可以知道任何解决方案吗?

原文由 Nitin Murlidhar Gaikwad 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.4k
2 个回答

只需将它们设置为 0

myObj.setCreated(rs.getTimestamp("created").toLocalDateTime().withNano(0));

样品/证明:

 import java.time.LocalDateTime;

public class DateTimeSample {

  public static void main(String[] args) {
    LocalDateTime ldt = LocalDateTime.now();
    System.out.println(ldt);
    System.out.println(ldt.withNano(0));
  }
}

输出:

 2015-07-30T16:29:11.684
2015-07-30T16:29:11


作者注:虽然这是公认的,但 Peter Lawrey 的回答 是恕我直言,因为它使意图更加明确。

原文由 Marvin 发布,翻译遵循 CC BY-SA 4.0 许可协议

截短

你可以放弃任何少于几秒钟的东西。致电 LocalDateTime::truncatedTo

 ldt = ldt.truncatedTo(ChronoUnit.SECONDS);

原文由 Peter Lawrey 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题