4

我正在尝试将存储在数据库中的字符串值(例如“2012-01-20”)转换为 2012 年 1 月 20 日的格式。

我看过一些例子,但他们使用Datewhich 适用于SimpleDateFormat.

例如,这是我尝试过的一种方法,但“尝试”总是失败,结果为空

DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
Date convertedDate=null;

try {

    convertedDate = df.parse(datePlayed);                   

} catch(ParseException e){
    e.printStackTrace();
}   
4

3 回答 3

17

简而言之,您没有使用正确的格式进行解析。您需要使用两个 DateFormat实例;一个用于解析,一个用于格式化。

DateFormat parser = new SimpleDateFormat("yyyy-MM-dd");
DateFormat formatter = new SimpleDateFormat("MMM dd, yyyy");
Date convertedDate = parser.parse(datePlayed);
String output = formatter.format(convertedDate);
于 2012-04-25T02:55:54.460 回答
1
Date da = new Date();
SimpleDateFormat ft = new SimpleDateFormat("E, dd/MM/yyyy !");
System.out.println("Update : " + ft.format(da));

您可以在以下位置更改您想要的日期样式:E, dd/MM/yyyy !

祝你好运 !

于 2015-07-23T16:54:05.537 回答
0

如果从数据库中读取日期,则将其存储为 java.sql.Date。然后您可以在其上使用 SimpleDateFormat,也许在转换为 java.util.Date 之后。从 ResultSet 对象中,您可以提取日期。

如果您的意思是给您一个文本中的日期,该日期是由其他人从数据库中提取的,而您却被它所困扰。尝试使用:

 DateFormat df = new SimpleDateFormat("yyyy-MM-dd");  
 df.setLenient(true);  
 convertedDate = df.parse(datePlayed.trim() );

还可以尝试在解析之前显示您正在解析的文本,以确保 datePlayed 值是您所期望的。使用parseInt,数据前后的多余空格会导致错误,因此调用trim()会删除多余的空格。

于 2012-04-25T03:01:57.583 回答