我需要使用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();
}
}
答案 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";