我有一个自定义日期字符串,它基本上是一年中最后一位数字的串联,与月份,日期,小时,分钟和秒相对应的数字。
示例数据String
:171231120000
我希望它格式化为: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);
答案 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