2015-06-29 14 views
5

Jak przekonwertować Localdatetime na sygnaturę czasową? Chcę korzystać z nowego interfejsu SE 8, ponieważ jest on lepszy niż data i kalendarz wykorzystania. Planuję używać localdatetime w całym programie, a następnie umieszczam tę datę w bazie danych mysql. Szukałem odpowiedzi, ale wydaje się, że nie ma zbyt wielu pytań i odpowiedzi dla java.time. To jest trochę kodu, który testuję. To tyle, ile mam.Konwertuj java.time.LocalDateTime SE 8 na timestamp

 LocalDateTime c = LocalDateTime.now(); 

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

Myślę, że najpierw muszę przekonwertować go na długi, ale nie wiem jak. Interfejs API umożliwia konwertowanie poszczególnych elementów, takich jak miesiąc i dzień, ale nie dla całej daty. Skoro już tu jestem, w jaki sposób przekonwertować z timestamp? Czy powinienem po prostu skorzystać z jodobime?

Próbowałem to:

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

tylko Oszczędza datę około 1970. system.print wyświetla bieżącą datę poprawnie. Chcę zapisać aktualną datę.

Odpowiedz

2

Przede wszystkim powinieneś zdecydować, czy naprawdę chcesz używać LocalDateTime. Poniżej kilka wyjaśnień na temat różnicy, zaczerpnięte z here:

< ...> LocalDateTime nie jest punktem na osi czasu jako błyskawiczne jest LocalDateTime jest tylko data i czas jako osoba napisze na notatki . Weźmy pod uwagę następujący przykład: dwie osoby, które urodziły się o godzinie 11, 2 lipca 2013 r. Pierwsza urodziła się w Wielkiej Brytanii, a druga w Kalifornii. Jeśli zapytamy któregoś z nich o datę urodzenia, okaże się, że urodziły się w tym samym czasie (jest to LocalDateTime), ale jeśli dopasujemy daty na osi czasu (używając Instant), dowiemy się, że urodził się w Kalifornii jest o kilka godzin młodsza od tej urodzonej w Wielkiej Brytanii (uwaga: aby stworzyć odpowiednią wyszukiwarkę Natychmiastową musimy przekonwertować czas na UTC, tutaj jest różnica). < ...>

Aby od razu uzyskać Instant, można użyć metody getEpochSecond().

Aby wydłużyć czas korzystania z LocalDateTime, należy uzyskać provide a timezone.

+0

Rzeczywisty program jest przechowywanie dat w LocalDateTime. –