无法解析日期
Date could not be parsed
我有一个自定义日期字符串,它基本上是年份的最后一位数字、对应于月份的数字、日期、小时、分钟和秒的串联。
示例数据 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);
那是因为你的日期字符串的格式不是 yyyy-mm-ddThh:mm:ss
你应该使用类似这样的格式 yyMMddhhmmss
您似乎错过了 '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");
中的日期字符串。应该可以!
我有一个自定义日期字符串,它基本上是年份的最后一位数字、对应于月份的数字、日期、小时、分钟和秒的串联。
示例数据 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);
那是因为你的日期字符串的格式不是 yyyy-mm-ddThh:mm:ss
你应该使用类似这样的格式 yyMMddhhmmss
您似乎错过了 '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");
中的日期字符串。应该可以!