【发布时间】:2016-09-21 07:28:43
【问题描述】:
我正在尝试重新格式化一些日期字符串。他们中的一些人在开始时有年份,我希望那些在年底时有他们的年份。我还想将分隔符标准化为下划线。
示例输入:
07_April_2008
16_05_2012
2016-01-28
14/12/2009
期望的输出:
07_April_2008
16_05_2012
01_28_2016
14_12_2009
这是我的第一次尝试,但是当我这样做时出现错误:
public String format(String date) {
String[] format = null;
date = date.replace("-", "_");
date = date.replace("/", "_");
if (date.contains("_")) {
format = date.split("_");
// new arrayList to add rearrangement to
ArrayList<String> formatNew = new ArrayList<String>();
for (int i = 0; i < format.length; i++) {
if (format[i].matches("\\d{4}")) {
formatNew.add(2, format[i]);
} else {
formatNew.add(format[i]);
}
}
}
return date;
}
这会产生错误:
java.lang.IndexOutOfBoundsException:索引:2,大小:0
我认为年份的选择很好,但数组中的其他两个元素没有。
【问题讨论】:
-
不确定你在问什么。异常告诉你究竟出了什么问题;您正在尝试访问索引 2;在长度为 0 的数组中。换句话说:不要假设
date.split()创建一个包含三个元素的数组 - 检查它以确保。以及为什么需要其他人来弄清楚:“也许我应该打印出一些跟踪语句以查看发生了什么;或者,见鬼,在调试器中运行它以查看每个值会发生什么”?! -
您可以使用
SimpleDateFormat来解析和格式化日期。
标签: java arrays string date arraylist