如何将多个日期类型字符串“2013-08-26T12:00:00.000”或“2013-08-26T12:00:00.000Z”格式化为:“2013-08-26 12:00:00”并到Java 中的日期对象?

问题描述 投票:0回答:4

我正在编写一个转换器方法,它将 xml 字符串数据解析为 java 对象。但我无法将日期解析为日期对象。 如何通过以下方式格式化这个日期字符串

"2013-08-26T12:00:00.000"
"2013-08-26 12:00:00"
到java中的Date对象?

注意:输入可以是多种日期格式,例如 -

"2013-08-26T12:00:00.000"
"2013-08-26T12:00:00.000Z"
。输入日期的格式可变。

编辑添加以下代码片段。 这是我尝试做的。

public Object fromString(String str) {
    DateFormat dateFormat = DateFormat.getDateInstance();
    try {
        Date date = dateFormat.parse(str);
        return date;
    } catch (ParseException e) {
        e.printStackTrace();
    }
}
java date
4个回答
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();
    }
}

2
投票

您可以使用 http://docs.oracle.com/javase/7/docs/api/java/text/ 将类似日期的字符串解析为 Date 对象(只要该字符串表示有效日期) SimpleDateFormat.html 重新格式化字符串没有

点。

为了处理允许具有可变精度的 XML-日期-时间字符串(有时省略第二部分或分数部分或时区偏移),使用

1
投票
不是一个好的选择,因为那样你会只有一种模式。不灵活。

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。
    

你可以试试这个:

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


© www.soinside.com 2019 - 2024. All rights reserved.