2016-03-25 24 views
3
arasındaki belirsizliği var

Ben HTMLiken java.util.Date ve java.sql.Date

Birth Date <input type="date" name="dob"/>

tarihi etiketinden girdi olarak çıkmaya çalışan ve tarafından jsp sayfasından erişiyorum

SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd"); 
Date date = sdf.parse(strDate); 
şöyle
String strDate = request.getParameter("dob"); 

kullanarak ancak dize biçiminde döner ve ben bugüne kadar bunu dönüştürmek istedim denedim

Ama hatayı gerekli

uyumsuz tip verir: java.sql.Date bulundu: java.util.Date

ve ben Pakage "java.util *." Ithal zaman java.util.Date date = sdf.parse(strDate); kullanmak için o java.sql maçında java.util ve sınıf java.sql.Date Bugüne kadar başvuru belirsiz

, hem sınıf java.util.Date verir

Eğer bir java.sql.Date gerekiyorsa
+1

Muhtemelen hala 'java.sql.Date' ithal var. Çıkarın ve hata gider. – Brian

cevap

3

(gerekli ve uyumsuz türleri: java.sql.Date bulundu: java.util.Date sen do gösterir), java.util.Date ithalat kaldırıp java.sql.Date inşa etmek DateFormat tarafından döndürülen java.util.Date kullanmak

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
try { 
    Date date = new Date(sdf.parse(strDate).getTime()); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 
1

Answer by Elliott Frisch ile ilgili bir sorun. Bir yorum istendiğinde önerilen daha iyi bir dönüşüm var. Var. Daha iyi bir yol da orijinal sorunu ortadan kaldırır ve java.util.Date'u java.sql.Date ile karıştırır.

java.time

sonra Java 8 yerleşik ve java.time çerçeve kötü tasarlanmış zahmetli eski java.util.Date/.Calendar sınıfları ve onların kin yerine alır. Yeni sınıflar, konseptte benzer ancak yeniden mimariye tabi tutulmuş son derece başarılı Joda-Time çerçevesinden esinlenmiştir. JSR 310 tarafından tanımlanmıştır. Oracle Tutorial'a bakın. ThreeTen-Extra projesi tarafından genişletildi. ThreeTenABP proje tarafından Android kullanılmak üzere sarılır ThreeTen-Backport projesi ile Java 6 & 7 dön portlu.

LocalDate sınıf zaman günün-ve saat dilimi bulunmayan olmadan tarih salt değerini temsil eder.

ISO 8601

Kişisel girdi dizesi ISO 8601 standardıyla uyumlu olur.

Bu standard tarih-saat dizeleri üreten/ayrıştırma için java.time sınıflarında varsayılan olarak kullanılır. Yani bir biçimlendirme kalıbı belirtmenize gerek yok.

LocalDate localDate = LocalDate.parse("2016-01-23"); 

SQL veritabanı

Sonunda JDBC sürücüleri doğrudan java.time türlerini kullanmak için güncellenecektir. O zamana kadar bir SQL veritabanı ile tarih-zaman değerleri almak veya göndermek gerektiğinde, java.time ve java.sql türleri arasında dönüştürebilirsiniz. Eski java.sql sınıfları, bu tür dönüşümler için yeni yöntemlere sahiptir. LocalDate için java.sql.Date sınıfını kullanın (bu yalnızca bir tarih değeri gibi görünüyor).

java.sql.Date mySqlDate = java.sql.Date.valueOf(localDate); 

... ve diğer yöne giden ...

java.time.LocalDate localDate = mySqlDate.toLocalDate(); 
İlgili konular