2015-07-30 16 views
17

Sto lavorando in applicazione java in cui sto usando la Java 8.LocalDateTime rimuovere i millisecondi

ho integrato il database (database multipla Oracle, MySQL, Postgres), e dove nel DB mi stringa la data di creazione.

il formato della data in DB è - 2015/07/29 16: 23: 28,143

prelevo questo dal DB e sorge in oggetto LocalDateTime

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

Quindi, ecco il problema è io non voglio per mostrare/inviare il millisecondo nella risposta. Voglio mostrare/inviare data come 2015-07-29 16:23:28

Ho provato il programma di formattazione ma fallisce mentre fornisce una stringa e non voglio cambiare l'oggetto LocalDateTime su String poichè questo causerà grandi cambiamenti in tutte le applicazioni Java. Voglio trovare la soluzione

Qualcuno può conoscere qualsiasi soluzione su questo.

+0

No, non è il formato in quei database per i loro tipi di dati di data e ora. I valori di data e ora nel database non hanno un formato intrinseco. La rappresentazione della stringa generata * da * il valore data-ora ha un formato. –

risposta

24

Semplicemente impostato 0:

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

Campione/prova:

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

uscita:

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

Questa soluzione funziona bene dato che fornisce la data senza i millisecondi –

29

si potrebbe provare questo per cadere qualcosa di meno di secondi

ldt = ldt.truncatedTo(ChronoUnit.SECONDS); 
+0

La soluzione va bene ma non funziona nel mio caso –

+0

@NitinMurlidharGaikwad Puoi spiegare "non funziona" in modo un po 'più dettagliato? –

+0

se lo provi ancora dà il millisecondo, ma se stampa/metti in stringa questa volta non mostra il millisecondo –