如何在Android中转换字符串日期格式?

时间:2014-10-01 20:52:35

标签: android string date

我有一个包含如此日期的字符串:

String startTime = "2014-10-11T17:00:41+0000"

我正在尝试重新格式化该字符串,以便它显示为:

Oct 11, 2014 5:00 PM 

2 个答案:

答案 0 :(得分:1)

使用SimpleDateFormat进行解析输入字符串并以新格式表示: http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

例:

SimpleDateFormat sdfmtIn = new SimpleDateFormat("dd/MM/yy");
SimpleDateFormat sdfmtOut= new SimpleDateFormat("dd-MMM-yyyy");
java.util.Date date = sdfmtIn.parse(strInput);
String strOutput = sdfmtOut.format(date);

答案 1 :(得分:1)

由于Date个对象不保留时区信息,因此您需要专门设置原始日期到目标格式化程序的时区偏移量。以下是从一种格式转换为另一种格式的完整代码,同时保持时区偏移(在您的情况下为 +0000 )。有关TimeZonehere的更多信息以及如何为您的需求here构建正确的日期和时间模式字符串。

try {
    DateFormat originalFormat = new SimpleDateFormat(
            "yyyy-MM-dd'T'HH:mm:ssZ", Locale.ENGLISH);
    DateFormat targetFormat = new SimpleDateFormat(
            "MMM dd, yyyy K:mm a", Locale.ENGLISH);
    targetFormat.setTimeZone(TimeZone.getTimeZone("GMT+0000"));
    Date date = originalFormat.parse("2014-10-11T17:00:41+0000");
    String formattedDate = targetFormat.format(date);

    System.out.println(formattedDate);
} catch (ParseException e) {
    e.printStackTrace();
}

输出:2014年10月11日下午5:00