Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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 LocalDateTime删除毫秒_Java_Database_Date_Java 8 - Fatal编程技术网

Java LocalDateTime删除毫秒

Java LocalDateTime删除毫秒,java,database,date,java-8,Java,Database,Date,Java 8,我在使用Java8的java应用程序中工作 我已经集成了数据库(多数据库Oracle、Mysql、Postgres),并在DB中输入创建日期的字符串 DB中的日期格式为-2015-07-29 16:23:28.143 我从DB中获取它并在Localdatetime对象中设置 myObj.setCreated(rs.getTimestamp("created").toLocalDateTime()); 所以这里的问题是我不想在响应中显示/发送毫秒。我想显示/发送日期,如2015-07-29 16

我在使用Java8的java应用程序中工作

我已经集成了数据库(多数据库Oracle、Mysql、Postgres),并在DB中输入创建日期的字符串

DB中的日期格式为-2015-07-29 16:23:28.143

我从DB中获取它并在Localdatetime对象中设置

myObj.setCreated(rs.getTimestamp("created").toLocalDateTime());
所以这里的问题是我不想在响应中显示/发送毫秒。我想显示/发送日期,如2015-07-29 16:23:28

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


任何人都知道这方面的解决方案。

只需将其设置为
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

作者注:虽然这是公认的,但IMHO更可取,因为它使意图更加明确。

Truncate 你可以在几秒钟内放下任何东西。打电话


不,这不是那些数据库中日期-时间数据类型的格式。数据库中的日期时间值没有固有格式。从日期时间值生成的字符串表示形式有一个格式。此解决方案工作正常,因为它给出的日期没有毫秒。这是一个小提示。确保你不需要几秒钟。如果您的LocalDateTime 2015-07-30T16:29:00.684中有00秒,并且您使用nano(0)或truncatedTo(ChronoUnit.seconds)进行剪切,您将获得2015-07-30T16:29。有时这并不是你所期望的结果。这一点是正确的。不过,这只是
LocalDateTime.toString
的一个问题
LocalDateTime.format(DateTimeFormatter.ISO\u LOCAL\u DATE\u TIME)
将打印秒数。@NitinMurlidharGaikwad您能更详细地解释一下“不起作用”吗?如果您尝试此方法,仍然会给出毫秒数,但是,如果您这次打印/输入字符串,它不会显示毫秒。当比较在测试中创建的LocalDateTime,然后用于比较数据库中将毫秒舍入到最接近秒的值时,这个答案对我来说效果很好。适用于
Instant
,我更喜欢这个答案。意图更为明确
ldt = ldt.truncatedTo(ChronoUnit.SECONDS);