2015-06-29 2 views
5

Wie konvertieren Sie eine Localdatetime in Timestamp? Ich möchte das neue SE 8 date api verwenden, da es besser ist als das util Datum und der Kalender. Ich plane, localdate während meines Programms zu verwenden und dieses Datum dann in eine mysql Datenbank zu setzen. Ich habe nach einer Antwort gesucht, aber es scheint nicht viele Fragen und Antworten für java.time zu geben. Dies ist ein kleiner Teil des Codes, den ich gerade teste. Das ist soweit ich gekommen bin.Convert java.time.LocalDateTime SE 8 in Timestamp

 LocalDateTime c = LocalDateTime.now(); 

     java.sql.Timestamp javaSqlDate = new java.sql.Timestamp(c.getLong()); 

Ich denke, ich muss es in eine lange zuerst konvertieren, aber ich weiß nicht wie. Die API ermöglicht die Konvertierung einzelner Elemente wie Monat und Tag, jedoch nicht für das gesamte Datum. Da ich bereits hier bin, wie konvertiert man zurück vom Zeitstempel? Sollte ich nur jodatime benutzen? diese

Ich habe versucht: richtig

LocalDateTime c = LocalDateTime.now(); 
ZoneId zoneId = ZoneId.systemDefault(); 

System.out.println("this:" + c); 

java.sql.Timestamp javaSqlDate = new java.sql.Timestamp(c.atZone(zoneId).toEpochSecond()); 

pst.setTimestamp(2, javaSqlDate); 

Das spart nur das Datum um 1970 system.print das aktuelle Datum druckt. Ich möchte, dass das aktuelle Datum gespeichert wird.

Antwort

2

Zunächst einmal sollten Sie entscheiden, ob Sie wirklich Local verwenden möchten. Im Folgenden einige Erklärungen über den Unterschied sind, entnommen aus here:

< ...> Local ist kein Punkt auf der Zeitlinie als Instant ist, ist Local nur ein Datum und Zeit als eine Person auf einem Zettel schreiben würde . Betrachten wir das folgende Beispiel: zwei Personen, die um 11 Uhr am 2. Juli 2013 geboren wurden. Die erste wurde in Großbritannien geboren, die zweite in Kalifornien. Wenn wir einen von ihnen für ihr Geburtsdatum fragen wird es aussehen, dass sie auf der gleichen Zeit geboren wurden (dies ist die Local), aber wenn wir die Daten auf der Zeitleiste (mit Sofort) ausrichten werden wir herausfinden, dass der in Kalifornien geboren ist ein paar Stunden jünger als der, der in Großbritannien geboren wurde (NB: um den entsprechenden Instant zu erstellen, müssen wir die Zeit in UTC umrechnen, hier liegt der Unterschied). < ...>

Um lange von Instant zu bekommen, könnten Sie getEpochSecond() Methode verwenden.

Um Sie sollten provide a timezone lange von Local zu bekommen.

+0

Das aktuelle Programm wird Daten in Local speichern. –