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



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

我正在使用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();
    }
}

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

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

SimpleDateFormat 无法处理微秒。您需要去掉多余的 3 位数字。喜欢这个:

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

相关内容

  • 没有找到相关文章

最新更新