无法解析日期

时间:2017-07-13 07:29:45

标签: java string date parsing simpledateformat

我有一个自定义日期字符串,它基本上是一年中最后一位数字的串联,与月份,日期,小时,分钟和秒相对应的数字。
示例数据String171231120000

我希望它格式化为:2017-12-31T12:00:00,但似乎无法解析。

您能否帮我查一下我的代码有什么问题?

String dateInString = "171231120000";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-ddThh:mm:ss");     
Date date = sdf.parse(dateInString);

System.out.println(date);

2 个答案:

答案 0 :(得分:2)

您似乎错过了'T'而只写了T

在SimpleDateFormat上查看此Oracle documentation。 您可以尝试将代码行替换为此代码:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");

<强>更新

或者这个:

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMMddd'T'HHmmss");

取决于你的字符串。我确定你没有写出正确的T。试试这个!

请告诉我这是否对您有帮助!

更新2

Util方法将您的字符串解析为SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");

public String gerRightFormat(String input) {
    String output = "";
    for (int i = 0; i < input.length(); i++) {
        if (i <= 4) {
            output += input.charAt(i);
        } else if (i >= 5 && i <= 6) {
            output += input.charAt(i);
        } else if (i >= 7 && i <= 9) {
            output += input.charAt(i);
        } else if (i >= 10 && i <= 12) {
            output += input.charAt(i);
        } else if (i >= 13 && i <= 15) {
            output += input.charAt(i);
        }
        if (i == 3) {
            output += "-";
        } else if (i == 5) {
            output += "T";
        } else if (i == 8) {
            output += ":";
        } else if (i == 11) {
            output += ":";
        }
    }
    return output;
}

您的output将成为SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");中的日期字符串。应该工作!

答案 1 :(得分:0)

这是因为您的日期字符串的格式不是yyyy-mm-ddThh:mm:ss,您应该使用看起来像这样的格式yyMMddhhmmss