我正在编写一个将xml字符串数据解析为java对象的转换器方法。但我无法解析日期对象。 如何使用以下方式格式化此日期字符串“2013-08-26T12:00:00.000”:“2013-08-26 12:00:00”到java中的Date对象?
编辑添加以下代码段。 这是我试图做的。
public Object fromString(String str) {
DateFormat dateFormat = DateFormat.getDateInstance();
try {
Date date = dateFormat.parse(str);
return date;
} catch (ParseException e) {
e.printStackTrace();
}
}
答案 0 :(得分:3)
你应该首先谷歌这些东西。 你走了:
public static void main(String[] args) {
String inFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS";
String outFormat = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(inFormat);
try {
Date d = sdf.parse("2013-08-26T12:00:00.000");
sdf.applyPattern(outFormat);
System.out.println(sdf.format(d));
} catch (ParseException e) {
// handle appropriately
e.printStackTrace();
}
}
答案 1 :(得分:2)
您可以使用http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
将任何类似日期的字符串解析为Date对象(只要字符串代表有效日期)重新格式化字符串时有没有点。
答案 2 :(得分:0)
你可以试试这个:
public static void main(String[] args) throws Exception {
String original = "2013-08-26T12:00:00.000";
Date date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.S").parse(original);
String format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
System.out.printf("Before: %s\nAfter: %s\n", original, format);
}
输出:
Before: 2013-08-26T12:00:00.000
After: 2013-08-26 12:00:00
答案 3 :(得分:0)
为了处理允许具有可变精度的XML-date-time-strings(有时会忽略second-fraction-part-part或timezone-offset),使用SimpleDateFormat
不是一个好的选择因为那时你只有一种模式。不灵活。
替代XML:
String xml = "2013-08-26T12:00:00.000"; // maybe optionally with additional timezone offset
javax.xml.datatype.DatatypeFactory factory = javax.xml.datatype.DatatypeFactory.newInstance();
XMLGregorianCalendar xmlGregCal = factory.newXMLGregorianCalendar(xml);
java.util.Date d = xmlGregCal.toGregorianCalendar().getTime();
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String output = outputFormat.format(d);
还要注意一些重载方法,以便更改解析和格式化的时区设置 - 请参阅javadoc。