2011-04-16 16 views
5

Geçerli tarihi yakaladığımda ay, gün ve yılı çekiyorum, bir dize oluşturucu kullanıyorum ve içine koyduğum bir mm-gg-yyyy biçimi ile bitiyorum. bir metin görüntüsü. Verileri bir sqlitedb'ye kaydettiğimde, sadece tarihi metin görüntüsünden alıyorum ve onu ekliyorum. Bu, yyyy-aa-gg biçimi gerektirdiklerinden tarih işlevleri için iyi çalışmaz.aa-gg-yyyy komutunu yyyy-aa-gg'ye dönüştürün

Bunu işlemenin en iyi yolu nedir?

cevap

20

İki SimpleDateFormat örneğini kullanın.

String dateString1 = "16-04-2011"; 
Date date = new SimpleDateFormat("dd-MM-yyyy").parse(dateString1); 
String dateString2 = new SimpleDateFormat("yyyy-MM-dd").format(date); 
System.out.println(dateString2); // 2011-04-16 
// ... 

Ama daha adil değerini tutun ve ön uçta sadece biçimlendirme uygulamak için java.util.Date her zaman kullanmaktır. JDBC, java.sql.Date bir SQL dizesinde ayarlamak için PreparedStatement#setDate() sunar. Diğer taraftan

preparedStatement.setDate(1, new java.sql.Date(date.getTime())); 

, DB'den almak sadece ResultSet#getDate() kullanıp java.util.Date bunu upcast için.

Date date = resultSet.getDate("columnname"); 
+0

+1 Date nesnesi olarak veritabanından tarihini almak için. Ardından, tarihi her bir görünümde gereken şekilde biçimlendirebilirsiniz. – hooknc

0

Başka Yaklaşım sen sürebilir:

/** 
* This Method Takes an Input String in the format of MM/dd/yyyy 
* and converts it to yyyy-MM-dd 
* 
* @param originalString 
* @return 
*/ 
private String convertMMddyyyyToyyyyMMdd(String originalString) { 
    StringBuilder dateBuilder = new StringBuilder(); 
    dateBuilder = dateBuilder.append(originalString.substring(6)).append("-").append(originalString.substring(0, 2)).append("-").append(originalString.substring(3, 5)); 
    return dateBuilder.toString(); 
}