将mm-dd-yyyy转换为yyyy-mm-dd

将mm-dd-yyyy转换为yyyy-mm-dd

问题描述:

当我抓取当前日期时,我将月份,日期和年份拉到一起,使用字符串生成器并以mm-dd-yyyy格式结尾,一个textview。当我将数据保存到sqlitedb时,我只是从textview中获取日期并插入它。这对日期函数不适用,因为它们需要yyyy-mm-dd格式。将mm-dd-yyyy转换为yyyy-mm-dd

处理这个问题的最佳方法是什么?

使用两个SimpleDateFormat实例。

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 
// ... 

但更好的是只使用java.util.Date所有的时间来保存价值和应用仅在前端格式化。 JDBC提供PreparedStatement#setDate()以在SQL字符串中设置java.sql.Date

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

从另一个侧面,从数据库得到它,只要使用ResultSet#getDate(),它上溯造型到java.util.Date

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

+1从数据库作为Date对象获取日期。然后,您可以根据需要在每个特定视图中格式化日期。 – hooknc 2011-04-16 16:40:06

另一个方法,你可以采取:

/** 
* 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(); 
}