LocalDateTime remove the milliseconds

Truncate

You can drop anything less than seconds. Call LocalDateTime::truncatedTo.

ldt = ldt.truncatedTo(ChronoUnit.SECONDS);

Providing code and logs to Happy Family comment at Marvin answer for those for whom STRING works,

!!! I as well fell into the same trap !!!

Issue:

withNano(0) and truncatedTo(ChronoUnit.SECONDS) will also remove seconds if the seconds are as :00 (At clock, seconds hand at 12 up straight)

Further Stretching Marvin's example output

2015-07-30T16:29:11.684
2015-07-30T16:29:11
2015-07-30T16:31 // for actual time 2015-07-30T16:31:00.684
2015-07-30T16:31 // for actual time 2015-07-30T16:31:00.888

Above behaviour which could cause BUG:

As you eliminate the nano seconds, if seconds turn up as :00, they skip from being printed

RESOLUTION:

public class WithNanoTest {
    public static void main(String[] args) throws InterruptedException {
        while (true) {
            Thread.sleep(500);

            DateTimeFormatter dtf = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
            System.out.println("truncate :::: " + LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS).format(dtf));
            System.out.println("withNano :::: " + LocalDateTime.now().withNano(0).format(dtf));
        }
    }
}

Screenshot of logs

Logs using DateFormatter

Logs using DateFormatter

Logs WITHOUT DateFormatter (only using truncate or withNano(0))

Observe the missing seconds here !

Logs WITHOUT DateFormatter


Simply set them to 0:

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

Sample/proof:

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));
  }
}

Output:

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

Author's note: Although this is the accepted one, Peter Lawrey's answer is IMHO preferrable because it makes the intention more clear.