gpt4 book ai didi

java - 如何在 Java 中对字符串数组中的日期进行排序?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:09:51 25 4
gpt4 key购买 nike

我想创建一个日期数组并对其进行排序。这就是我能够做到的,但这不是我所需要的。

   java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("dd-MM-yyyy");
java.util.Date date1 = sdf.parse("05-03-2014");
java.util.Date date2 = sdf.parse("23-08-2014");
java.util.Date dates[] = {date1, date2};
java.util.Arrays.sort(dates);
System.out.println(java.util.Arrays.toString(dates));

因为我有一个字符串数组 "String dates[] = {"05-11-2014", "23-08-2014","05-02-2013"};"所以我必须对字符串数组中的日期进行排序。如何更改我的代码?

最佳答案

更好的方法是将 String 数组转换为 Date 数组

Date[] arrayOfDates = new Date[dates.length];
for (int index = 0; index < dates.length; index++) {
arrayOfDates[index] = sdf.parse(dates[index]);
}

然后对 arrayOfDates 进行排序,如果需要,使用 SimpleDateFormat 将结果格式化回 dates 数组...

Arrays.sort(arrayOfDates);
for (int index = 0; index < dates.length; index++) {
dates[index] = sdf.format(arrayOfDates[index]);
}

如果 dates 数组中的一个或多个值是无效格式,这使您可以更好地控制您应该做什么。

另一个“肮脏”的解决方案是使用自定义 Comparator 将值转换为内联的 Date 并比较它们。

如果你能保证日期的有效性,这没问题,但是当你不能保证时就会开始崩溃,例如......

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Comparator;
import java.util.logging.Level;
import java.util.logging.Logger;

public class DirtySort {

public static void main(String[] args) {
String dates[] = {"05-11-2014", "23-08-2014","05-02-2013"};
Arrays.sort(dates, new Comparator<String>() {
private SimpleDateFormat sdf = new java.text.SimpleDateFormat("dd-MM-yyyy");
@Override
public int compare(String o1, String o2) {
int result = -1;

try {
result = sdf.parse(o1).compareTo(sdf.parse(o2));
} catch (ParseException ex) {
ex.printStackTrace();
}

return result;
}
});

for (String date : dates) {
System.out.println(date);
}
}

}

关于java - 如何在 Java 中对字符串数组中的日期进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25677690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com