解析日期时间格式" 2013-12-09 12:14:09.994844 + 10"在Android中

时间:2014-04-06 10:57:14

标签: java android datetime

我需要使用data = "2013-12-09 12:14:09.994844+10"解析SimpleDateFormat的字符串值。

我使用的是format = "yyyy-MM-dd HH:mm:ss.SSSSSSZ",但它无效。

我该如何解决这个问题?

public class Test {

    public static final String FORMAT1 = "hh:mm aa dd.MM.yyyy";
    public static final String FORMAT2 = "yyyy-MM-dd HH:mm:ss.SSSSSSZ";

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("Time = "
                + getDate("2013-12-09 12:14:09.994844+10",
                DateTimeUtils.FORMAT2, DateTimeUtils.FORMAT1));
    }

    public static String getDate(String inputDate, String inputFormat,
                                 String outputFormat) {

        String strDate = "";
        SimpleDateFormat sdfInput = new SimpleDateFormat(inputFormat,
                Locale.getDefault());
        SimpleDateFormat sdfOutput = new SimpleDateFormat(outputFormat,
                Locale.getDefault());

        if (inputDate != null) {
            Date date;
            try {
                date = sdfInput.parse(inputDate);
                strDate = sdfOutput.format(date);
            } catch (ParseException e) {
                strDate = "";
                e.printStackTrace();
            }
        }
        return strDate.toUpperCase();
    }
}

2 个答案:

答案 0 :(得分:0)

在Java SE 7中,使用一个符号和两个数字格式化时区使用字母'X'。例如:"yyyy-MM-dd HH:mm:ss.SSSSSSX"。可以找到javadoc here

在Android中,但不支持字母'X',但您可以在日期字符串中添加两个额外的零,以便使用'Z'。例如:"2013-12-09 12:14:09.994844+1000"将被正确解析。可以找到适用于Android的javadoc here

答案 1 :(得分:-1)

SimpleDateFormat无法处理微秒。 你需要删除额外的3位数。 像这样:

data = data.substring(0, data.length()-4)+"Z";