我正在以“20150119”的形式获取日期,我想将其转换为以下格式:“19。2015年1月”。
如何以这种格式转换日期。
我尝试了以下代码:
private void convertDate() {
String m_date = "20150119";
SimpleDateFormat originalFormat = new SimpleDateFormat("yyyy.MM.dd");
try {
Date date = originalFormat.parse(m_date.toString());
Log.e("Date is====", date.toLocaleString());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
但它给了我错误:
java.text.ParseException:无法解析的日期:“20150119”(偏移8处)
答案 0 :(得分:2)
您需要指定两种格式:一种用于解析输入,一种用于格式化输出。
发生错误是因为您尝试解析的字符串与您在originalFormat
中指定的格式不匹配:需要
SimpleDateFormat originalFormat = new SimpleDateFormat("yyyyMMdd");
如果要解析格式为String m_date = "20150119";
的字符串。解析具有该格式的字符串将为您提供Date
:
Date date = originalFormat.parse(m_date);
然后您可以使用其他格式输出Date
:
SimpleDateFormat outputFormat = new SimpleDateFormat("dd. MMMM yyyy");
System.out.println("Date: " + outputFormat.format(date));
答案 1 :(得分:1)
您正在使用DateFormat
SimpleDateFormat originalFormat = new SimpleDateFormat("yyyy.MM.dd");
所以SimpleDateFormat
期望String
像"2015.01.19"
一样(注意点)。
您正在提供String
String m_date = "20150119";
不包含点因此SimpleDateFormat
无法解析String
,因为它不包含点(由您指定)。
要解析您必须使用的String
SimpleDateFormat originalFormat = new SimpleDateFormat("yyyyMMdd");
要打印已解析的日期,您必须使用另一个SimpleDateFormat
,例如
SimpleDateFormat targetFormat = new SimpleDateFormat("dd. MMMM yyyy");
然后,您可以使用方法format()
以您希望的格式设置日期格式。