将字符串 "2008-02-10T12:29:33.000" 转换为格式相同的日期 2008-02-10T12:29:33.000 in Java

Convert String "2008-02-10T12:29:33.000" to a Date with the same format 2008-02-10T12:29:33.000 in Java

我有一个 ArrayList,其中包含类似 2008-02-10T12:29:33.000

的字符串
[2008-02-11T12:29:33.000, 2008-02-10T12:29:33.000]...

我想按自然顺序对这个 ArrayList 进行排序。为此,我必须将此字符串转换为我想要的日期。 对上面的ArrayList进行排序后的顺序应该是:

[2008-02-10T12:29:33.000, 2008-02-11T12:29:33.000]

我使用的编程语言是Java。

虽然您可以只对字符串进行排序,但我会将这些日期存储为 LocalDateTime 而不是字符串,并以这种方式保存它们。这将使操纵它们变得容易得多。

转换可能如下所示:

List<String> list = Arrays.asList("2008-02-11T12:29:33.000", "2008-02-10T12:29:33.000");
List<LocalDateTime> dates = list.stream().map(LocalDateTime::parse).collect(toList());

(这是有效的,因为你的字符串是正确的 ISO 格式)。

然后排序就这么简单:

Collections.sort(dates);

我认为您不需要进行任何转换,因为这些字符串有自然顺序(至少我看不到反例)。

所以 Collections.sort() 应该可以解决问题。

ArrayList<String> dates = new ArrayList<String>();
dates.add("2008-02-11T12:29:33.000");
dates.add("2008-02-10T12:29:33.000");
Collections.sort(dates);
for (String date : dates)
{
  System.out.println(date);
}