2015-06-29 19 views
5

Localdatetime zaman damgasına nasıl dönüştürebilirsiniz? Yeni SE 8 tarih api kullanmak istiyorum çünkü kullanım tarihinden ve takviminden daha iyi. Programım boyunca localdatetime kullanmayı planlıyorum ve daha sonra bu tarihi bir mysql veritabanına yerleştiriyorum. Bir cevap aradım ama java.time için çok fazla soru ve cevap yok gibi görünüyor. Bu, test ettiğim kodun biraz. Bu sahip olduğum kadarıyla.java.time.LocalDateTime SE 8 zaman damgasına dönüştürme

 LocalDateTime c = LocalDateTime.now(); 

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

Sanırım ilk önce onu dönüştürmem gerekiyor, ama nasıl olduğunu bilmiyorum. API, ay ve gün gibi bireysel öğeleri dönüştürmeye izin verir, ancak tüm tarih için değil. Zaten burada olduğumdan, zaman damgasından nasıl dönüyorsun? Jodatime kullanmalı mıyım?

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

Bu yalnızca system.Print doğru geçerli tarih yazdırır 1970 civarında tarihi kaydeder:

Bu çalıştı. Mevcut tarihi kaydetmesini istiyorum.

cevap

2

Öncelikle LocalDateTime'ı gerçekten kullanmak isteyip istemediğinize karar vermelisiniz. Aşağıda here alınan farkın, hakkında bazı açıklamalar şunlardır: Anlık olarak

< ...> LocalDateTime zaman tablosunda bir nokta değil, LocalDateTime bir not yazıyormuş bir kişi olarak sadece tarih ve saattir . Aşağıdaki örneği ele alalım: 11:00, 2 Temmuz 2013'te doğmuş iki kişi. İlki, İngiltere'de, ikinci sırada ise Kaliforniya'da doğdu. Herhangi birisini doğum tarihleri ​​için sorarsak, aynı zamanda doğduklarını görüneceklerdir (bu LocalDateTime'dır), ancak tarihlerini zaman çizelgesinde (Anında) hizalarsak, Kaliforniya'da doğduğunu öğreneceğiz. İngiltere'de doğmuş olandan birkaç saat daha genç (NB: uygun Anında oluşturmak için zamanı UTC'ye çevirmek zorundayız, burası farkın olduğu yerdir). < ...>

Anlık Arama'dan uzun süre yararlanmak için getEpochSecond() yöntemini kullanabilirsiniz.

LocalDateTime'dan uzun süre yararlanmak için provide a timezone'u kullanmalısınız.

+0

fiili programı LocalDateTime içine tarihleri ​​depoluyor. –

İlgili konular