如何格式化此日期字符串" 2013-08-26T12:00:00.000"通过以下方式:" 2013-08-26 12:00:00"到java中的Date对象?

时间:2014-04-04 12:54:38

标签: java date

我正在编写一个将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();
    }
}

4 个答案:

答案 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。