2013-06-26 43 views
9

如何转换2013-06-24至2013年6月24日?我正在使用下面的代码。将yyyy-mm-dd转换为dd mm yyyy

date1="2013-06-24"; 
SimpleDateFormat d= new SimpleDateFormat("dd MMM yyyy"); 

try{ 
date2 = d.parse(date1); 
}catch (ParseException e1) { 
// TODO Auto-generated catch block 
    e1.printStackTrace(); 
} 

但我得到这个错误 “java.text.ParseException:无法解析的日期: ”2013年6月24日“(在偏移4)”

回答

32

需要两个DateFormat情况下格式化你解析日期。

DateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd"); 
DateFormat outputFormat = new SimpleDateFormat("dd MMM yyyy"); 
String inputDateStr="2013-06-24"; 
Date date = inputFormat.parse(inputDateStr); 
String outputDateStr = outputFormat.format(date); 
+0

非常感谢你,现在工作。 – user1740281

+0

非常感谢 –

1

变化

SimpleDateFormat d= new SimpleDateFormat("dd MMM yyyy"); 

SimpleDateFormat d= new SimpleDateFormat("yyyy-MM-dd"); 

你必须遵循date1模式。一来解析原来String,另一个输出你想要的:然后你就可以用

new SimpleDateFormat("dd MMM yyyy"); 
+0

我改变了它,但我得到这个答案“周一6月24日00:00:00北京时间2013”​​ – user1740281

+0

感谢您的答复。 – user1740281

2

查看第一个问题是您对String和Date使用了不同的分隔符。 因此,无论是在字符串中执行“2013-06-24”还是“2013 06 24”,或者对新的SimpleDateFormat(“dd-MMM-yyyy”)执行新的SimpleDateFormat(“dd MMM yyyy”)。

而第二个问题是,你不能直接修改的格式像这样,在字符串您有年月日期格式,所以首先做一个Date对象格式同比改变为以下你想要的格式:

date1="2013-06-24"; 

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 

Date dt = format.parse(date1); 

SimpleDateFormat your_format = new SimpleDateFormat("dd-MMM-yyyy"); 

date2 = your_format.format(dt); 
1
public String getStringFormatted(String datestring) { 
    String format = "dd MM yyyy"; 
    SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.getDefault()); 
    return sdf.format(new Date(datestring.replaceAll("-", "/"))); 
}