将日期转换为“2015年12月17日”格式

时间:2015-05-11 12:33:20

标签: android date simpledateformat android-date android-dateutils

我正在以“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处)

2 个答案:

答案 0 :(得分:2)

您需要指定两种格式:一种用于解析输入,一种用于格式化输出。

  1. 发生错误是因为您尝试解析的字符串与您在originalFormat中指定的格式不匹配:需要

    SimpleDateFormat originalFormat = new SimpleDateFormat("yyyyMMdd");
    

    如果要解析格式为String m_date = "20150119";的字符串。解析具有该格式的字符串将为您提供Date

    Date date = originalFormat.parse(m_date);
    
  2. 然后您可以使用其他格式输出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()以您希望的格式设置日期格式。